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

首頁 > 學院 > 開發設計 > 正文

Decorator模式中遭遇繼承與聚合的沖突

2019-11-17 06:01:41
字體:
來源:轉載
供稿:網友

一:背景:Decorator

*Decorator 常被翻譯成"裝飾",我覺得翻譯成"油漆工"更形象點,油漆工(decorator)是用來刷油漆的,那么被刷油漆的對象我們稱decoratee.這兩種實體在Decorator 模式中是必須的。

*Decorator 定義:

動態給一個對象添加一些額外的職責,就象在墻上刷油漆.使用Decorator 模式相比用生成子類方式達到功能的擴充顯得更為靈活。

*為什么使用Decorator?

我們通常可以使用繼續來實現功能的拓展,假如這些需要拓展的功能的種類很繁多,那么勢必生成很多子類,增加系統的復雜性,同時,使用繼續實現功能拓展,我們必須可預見這些拓展功能,這些功能是編譯時就確定了,是靜態的。

使用Decorator 的理由是:這些功能需要由用戶動態決定加入的方式和時機.Decorator 提供了"即插即用"的方法,在運行期間決定何時增加何種功能。

*對于該模式,初步歸納為

1.基本功能為接口

2.Decorator參數為接口本身也為接口以便為下一個Decorator的參數

3.基本功能類實現接口 并作為Decorator構造函數的參數,以便在此基礎上添加新功能

4.額外功能由Decorator中的數據結構處理

二:問題

這是一段Decorator設計模式的實現例子如下:

基本功能:Counter類

需要添加的功能

1:上限控制

2:下限控制

import java.io.*;

class Counter{

PRivate int value;

public Counter(int v){

System.out.println("init me here in The Counter with value!");

value=v;

}

public Counter(Counter cc){

System.out.println("init me here in The Counter with class!");

value=cc.value;

}

public int read_value(){

System.out.println("read me here The value is:"+value);

System.out.println("read me here in The Counter!");

return value;

}

public void increment(){

System.out.println("increment me here in The Counter !");

value++;

}

public void decrement(){

System.out.println("decrement me here in The Counter !");

value--;

}

}

class Decorator extends Counter

{

Counter counter;

public Decorator(Counter c)

{

super(c);

System.out.println("init me here with class Decorator!");



發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 肃北| 兴义市| 历史| 安吉县| 沁阳市| 庆云县| 濉溪县| 固原市| 亳州市| 沙湾县| 阿坝| 从江县| 绵竹市| 天门市| 宁陵县| 富裕县| 黎城县| 班玛县| 舒城县| 吉木萨尔县| 兴国县| 科技| 兴安盟| 淅川县| 彝良县| 黄大仙区| 东山县| 仁化县| 老河口市| 武胜县| 裕民县| 谢通门县| 六安市| 鹿邑县| 襄垣县| 平昌县| 根河市| 柳州市| 额敏县| 长阳| 芜湖市|