日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

设计模式-结构型模式-装饰模式

發布時間:2025/3/15 asp.net 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 设计模式-结构型模式-装饰模式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

設計模式-結構型模式-裝飾模式

栗子

以成績單需要家長簽字為要求。

成績單類圖

// 抽象成績單 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 SugarFouthGradeSchoolReport extends FouthGradeSchoolReport{// 對成績進行美化private void reportHighScore(){}// 看完成績單,再匯報排名private void reportSort(){}// 對父類重寫,即report原先的成績單進行重寫public void report(){this.reportHighScore(); // 最高成績// 顯示成績單super.report();// 再告訴排名this.reportSort(); } }

最后場景類

public class Father{public static void main(String[] args){// 生成美化后的成績單SchoolReport sr = new SugarFouthGradeSchoolReport();// 看成績單sr.report();// 簽名sr.sign("");} }

繼續改進

如果要裝飾的太多,不可能無限的增加子類。
代碼如下

public abstract class Decorator extends SchoolReport{// 要知道那個成績單private SchoolReport sr;// 構造函數,傳遞成績單public Decorator(SchoolReport sr){this.sr = sr;}// 裝飾完成以后,需要有看到的需求public void report(){this.sr.report();}// 裝飾完成后進行簽名public void sign(String name){this.sr.sign(name);} }

核心在于通過構造函數,將要裝飾的對象傳入。再重寫方法。

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

總結

以上是生活随笔為你收集整理的设计模式-结构型模式-装饰模式的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。