国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

Java設計模式概述之結構型模式(裝飾器模式)

2019-11-11 07:05:51
字體:
來源:轉載
供稿:網友

三、裝飾器模式

java中,裝飾器模式使用場景非常普遍,例如BufferedInputStream就利用了裝飾器模式。

裝飾器模式與代理模式非常相似,相似點可總結如下:

1、都是對原始類功能、特性的增強。 2、都是通過注入原始類來實現(xiàn)類的增強。 3、其增強原始類的方式都是非侵入的,可插拔的。 4、被擴展后的代碼具有良好的擴展性。

當然,不同點如下:

1、注入方式不同。裝飾器模式是通過其構造方法接受原始類的實例的引用注入;代理模式是通過內部自動創(chuàng)建原始類的實例。 2、擴展性不同。裝飾器模式可以利用多態(tài)性來實現(xiàn)增強指定類的功能;代理模式只能針對固定類。裝飾器模式的擴展性更強。

裝飾設計模式示意圖:

這里寫圖片描述

代碼:

/** * @author Hanlin Wang */public class DecoratorMode { public static void main(String[] args) { A a = new A(); Decorator decorator = new Decorator(a); decorator.run(); }}//定義裝飾類class Decorator implements C1{ PRivate C1 c; public Decorator(C1 c){ this.c = c; } public void run(){ System.out.println("before"); c.run(); System.out.println("after"); }}//定義被裝飾類裝飾的類class A implements C1{ public void run(){ System.out.println("A's running"); }}//定義A類實現(xiàn)的接口interface C1{ void run();}

Decorator為裝飾器類,A為原始類,C1為公共接口,接口中有一個run方法。Decorator、A都實現(xiàn)C1接口的run方法。Decorator類中定義了私有的A類的成員變量a,并自定義了構造函數(shù)public Decorator(A a)用于注入a成員變量引用的實例對象。


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 陇南市| 喀喇沁旗| 深泽县| 汾西县| 通化县| 洮南市| 汤阴县| 资兴市| 体育| 泰州市| 荣昌县| 乌恰县| 景泰县| 河源市| 乳山市| 文昌市| 资溪县| 杭锦后旗| 昭苏县| 平原县| 安多县| 那坡县| 阿荣旗| 昆山市| 梨树县| 巴南区| 乌海市| 横峰县| 缙云县| 开原市| 抚宁县| 德保县| 肇东市| 广宗县| 吉首市| 青铜峡市| 兖州市| 兴业县| 谷城县| 通海县| 墨玉县|