设计模式-结构型模式-装饰模式
生活随笔
收集整理的這篇文章主要介紹了
设计模式-结构型模式-装饰模式
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
設計模式-結構型模式-裝飾模式
栗子
以成績單需要家長簽字為要求。
成績單類圖
// 抽象成績單 public abstract class SchoolReport{// 成績單你的成績情況public abstract void report();// 成績單要求家長簽字public abstract void sign(); }下面書寫四年級成績單
public class FouthGradeSchoolReport extends SchoolReport{// 自己的成績單public void report(){}// 家長簽名public void sign(String name){} }使用裝飾器模式
使用裝飾器模式,對成績單進行裝飾。
直接增加一個子類,重寫report方法。
最后場景類
public class Father{public static void main(String[] args){// 生成美化后的成績單SchoolReport sr = new SugarFouthGradeSchoolReport();// 看成績單sr.report();// 簽名sr.sign("");} }繼續改進
如果要裝飾的太多,不可能無限的增加子類。
代碼如下
核心在于通過構造函數,將要裝飾的對象傳入。再重寫方法。
public class HighScoreDecorator extends Decorator {// 構造函數public HighScoreDecorator(SchoolReport sr){super(sr);}// 對成績修改private void reportHighScore(){}// 重寫匯報方法,對進行進行匯報public void report(){this.reportHighScore();this.report();} }然后緊接著,對排名進行修飾
public class SortDecorator extends Decorator{// 構造函數public SortDecorator(SchoolReport sr){super(sr);}// 對排名裝飾private void reportSort(){}// 輸出成績public void report(){super.report();this.reportSort();} }最后書寫場景類
public class Father{public static void main(String[] args){// 定義成績單SchooReport sr;// 獲取原裝成績單sr = new FouthGradeSchoolReport();// 對成績單進行裝飾sr = new HighScoreDecorator(sr);sr = new SortDecorator(sr);// 最后,看成績單sr.report();// 簽名sr.sign("");} }應用
登錄頁面數據上報,使用裝飾器,將登錄層頁面,上傳到上報類中,進行裝飾上統計代碼,然后將統計數據上報。
動態改變函數參數,原先有一個正常的函數,通過裝飾器,將正常的函數傳入,裝飾模式
應用ajax加token防止csrf攻擊
表單驗證,將表單驗證的內容,寫成一個類,然后需要哪個驗證的選項,直接將表單驗證傳入即可,達到裝飾器的目的,同時也達到了插件式的驗證。
總結
核心在于裝飾二字,將要裝飾的對象,通過構造函數傳入,然后再賦值,達到裝飾的目的,然后再次調用即可。
轉載于:https://www.cnblogs.com/melovemingming/p/10085167.html
總結
以上是生活随笔為你收集整理的设计模式-结构型模式-装饰模式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Good Time 冲刺 六
- 下一篇: [Nowcoder] 大整数相乘(拼多多