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

歡迎訪問 生活随笔!

生活随笔

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

asp.net

装饰者设计模式,简单代码实现

發布時間:2025/3/20 asp.net 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 装饰者设计模式,简单代码实现 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.


/**裝飾者模式* 裝飾者模式就是使用被裝飾類的一個子類的實例,在客戶端將* 這個子類的實例交給裝飾類。是集成的替代方案* 優點:使用裝飾模式,可以提供比繼承更靈活的擴展對象的功能,它可以動態的添加對象* 的功能,并且可以隨意地組合這些功能。* 缺點:正因為可以隨意組合,所以就可能出現一些不合理地邏輯*///首先創建手機類接口 package july.star.decorate; /*** Phone* 創建手機類接口* @author MoXingJian* @email 939697374@qq.com* @date 2016年12月11日 下午8:59:36* @version 1.0*/ public interface Phone {//每個手機都有打電話的功能public void call(); }//實現其接口 package july.star.decorate;/*** IPhone* @author MoXingJian* @email 939697374@qq.com* @date 2016年12月11日 下午9:01:17* @version 1.0*/ public class IPhone implements Phone{@Overridepublic void call() {System.out.println("手機可以打電話了!");} }//創建抽象的手機抽象類 package july.star.decorate; /*** PhoneDecotate* 創建抽象的手機裝飾類* @author MoXingJian* @email 939697374@qq.com* @date 2016年12月11日 下午9:03:29* @version 1.0*/ public abstract class PhoneDecorate implements Phone{private Phone p;public PhoneDecorate(Phone p){this.p = p;}@Overridepublic void call() {p.call();} }//給手機裝飾彩鈴功能 package july.star.decorate;/*** RingPhoneDecorate* 給手機裝飾彩鈴功能* @author MoXingJian* @email 939697374@qq.com* @date 2016年12月11日 下午9:26:02* @version 1.0*/ public class RingPhoneDecorate extends PhoneDecorate{public RingPhoneDecorate(Phone p) {super(p);}@Overridepublic void call() {System.out.println("手機可以聽彩鈴");super.call();} }//給手機添加播放視頻功能 package july.star.decorate;/*** MusicPhoneDecorate* 給手機添加播放視頻功能* @author MoXingJian* @email 939697374@qq.com* @date 2016年12月11日 下午9:29:04* @version 1.0*/ public class PlayPhoneDecorate extends PhoneDecorate{public PlayPhoneDecorate(Phone p) {super(p);}@Overridepublic void call() {super.call();System.out.println("手機可以播放視頻了");} }//測試 package july.star.decorate; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.util.Scanner; /*** PhoneDemo* 裝飾者模式* 裝飾者模式就是使用被裝飾類的一個子類的實例,在客戶端將* 這個子類的實例交給裝飾類。是集成的替代方案* 優點:使用裝飾模式,可以提供比繼承更靈活的擴展對象的功能,它可以動態的添加對象* 的功能,并且可以隨意地組合這些功能。* 缺點:正因為可以隨意組合,所以就可能出現一些不合理地邏輯* @author MoXingJian* @email 939697374@qq.com* @date 2016年12月11日 下午9:06:30* @version 1.0*/ public class PhoneDemo {public static void main(String[] args) {Phone p = new IPhone();p.call();System.out.println("-----------------------");// 打電話前聽彩鈴// 給手機添加彩鈴功能RingPhoneDecorate rpd = new RingPhoneDecorate(p);rpd.call();System.out.println("-----------------------");// 打完電話后看視頻// 給手機添加播放視頻PlayPhoneDecorate pd = new PlayPhoneDecorate(p);pd.call();System.out.println("-----------------------");// 打電話前聽彩鈴,打完電話后播放視頻RingPhoneDecorate r = new RingPhoneDecorate(new PlayPhoneDecorate(p));r.call();System.out.println("-----------------------");// 類似的IO流也是裝飾者模式設計InputStream is = System.in; // 字節流// 包裝InputStreamReader isr = new InputStreamReader(is); // 字符流,單讀取一個// 再包裝BufferedReader bis = new BufferedReader(isr);// 可以用一行來表示// BufferedReader br = new BufferedReader(new InputStreamReader(System.in));BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));//又或者是控制臺錄入//Scanner sc = new Scanner(System.in);} }

總結

以上是生活随笔為你收集整理的装饰者设计模式,简单代码实现的全部內容,希望文章能夠幫你解決所遇到的問題。

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