激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|編程技術|正則表達式|

服務器之家 - 編程語言 - JAVA教程 - java設計模式之裝飾器模式(Decorator)

java設計模式之裝飾器模式(Decorator)

2020-07-21 11:43yuminfeng728 JAVA教程

這篇文章主要為大家詳細介紹了java設計模式之裝飾器模式Decorator,具有一定的參考價值,感興趣的小伙伴們可以參考一下

概述

裝飾模式是對客戶端以透明的方式擴展對象的功能,是繼承關系的一個替代方案。也就是說,客戶端并不會覺得對象在裝飾前和裝飾后有什么不同,裝飾模式可以在不用創(chuàng)造更多子類的情況下,將對象的功能加以擴展,裝飾模式的關鍵在于這種擴展是完全透明的。

模式的結構

UML類圖:

java設計模式之裝飾器模式(Decorator)

裝飾模式中的類角色:
抽象構件角色(Project):給出一個接口,以規(guī)范準備接收附加責任的對象
具體構件角色(Employe):定義一個將要接收附加責任的類
裝飾角色(Manager):持有一個構件對象的實例,并定義一個與抽象構件接口一致的接口
具體裝飾角色(ManagerA,ManagerB):負責給構件對象“貼上”附加的責任

代碼示例

java" id="highlighter_262667">
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
package interview;
 
interface Project{
  void doCoding();
}
 
class Employe implements Project{
 
  @Override
  public void doCoding() {
    System.out.println("工程師在編程......");
  }
}
 
class Manager implements Project{
 
  private Project project;
 
  public Manager(Project project){
    this.project = project;
  }
 
  @Override
  public void doCoding() {
    startNewWork();
    project.doCoding();
  }
 
  public void startNewWork(){}
}
 
class ManagerA extends Manager{
 
  public ManagerA(Project project) {
    super(project);
  }
 
  @Override
  public void startNewWork() {
    System.out.println("開發(fā)經理開始新的工作計劃");
  }
}
 
class ManagerB extends Manager{
 
  public ManagerB(Project project) {
    super(project);
  }
 
  @Override
  public void startNewWork() {
    System.out.println("測試經理開始新的工作計劃");
  }
}
public class MainTest {
 
  public static void main(String arg[]) {
    Project project = new Employe();
    Project managerA = new ManagerA(project);
    Project managerB = new ManagerB(project);
    managerA.doCoding();
    managerB.doCoding();
  }
}

裝飾模式優(yōu)缺點:

優(yōu)點:

裝飾模式與繼承的目的都是要擴展對象的功能,但是裝飾模式可以提供比繼承更多的靈活性。裝飾模式允許系統(tǒng)動態(tài)決定“貼上”一個需要的“裝飾”,繼承關系則不同,繼承關系是靜態(tài)的,它在系統(tǒng)運行前就決定了。
通過使用不同的具體裝飾類以及這些裝飾類的組合,設計師可以創(chuàng)造很多不同的行為組合。

缺點:

由于使用裝飾模式,可以比使用繼承關系需要較少數(shù)目的類。使用較少的類,當然使設計比較易于進行。但是,在另一方面,使用裝飾模式會產生比使用繼承關系更多的對象。更多的對象會使得差錯變得困難,特別是這些對象看上去都很像。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 免费黄色av | 蜜桃免费在线 | 午夜a狂野欧美一区二区 | 国产亚洲区 | 最新毛片在线观看 | 久久久久久久久久久久久九 | 久久免费视频5 | 亚洲无马在线观看 | 国产亚洲精品视频中文字幕 | 免费午夜视频在线观看 | 免费看一级毛片欧美 | 国产人成免费爽爽爽视频 | 黄色片免费在线播放 | 黄污在线观看 | 美国一级黄色毛片 | 日韩美香港a一级毛片免费 日韩激情 | 久久国产免费 | 92看片淫黄大片欧美看国产片 | 国产一区二区三区在线免费 | 国产成年人在线观看 | 成人短视频在线播放 | xnxx 美女19| 免费一区二区三区 | 成人性生活视频在线观看 | 4480午夜 | 久久久婷婷一区二区三区不卡 | 国内精品伊人久久久久网站 | 舌头伸进添的我好爽高潮网站 | 九九热国产视频 | 成人免费毛片在线观看 | 牛牛视频在线 | 国产69精品久久久久9999不卡免费 | 毛片天天看| 欧美日韩国产综合网 | 1000部精品久久久久久久久 | 欧美不卡视频在线观看 | 欧美性生活久久久 | 男女羞羞视频 | 日本一区二区不卡在线观看 | 成人资源在线观看 | 欧美 日韩 亚洲 中文 |