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

首頁 > 編程 > Java > 正文

Java 設(shè)計模式 - 裝飾者模式

2019-11-06 07:37:28
字體:
供稿:網(wǎng)友

基本概念

裝飾者模式的作用:

裝飾模式就是給一個對象增加一些新的功能,而且是動態(tài)的,要求裝飾對象和被裝飾對象實現(xiàn)同一個接口,裝飾對象持有被裝飾對象的實例。

適配器模式的角色:

Component,抽象構(gòu)件,它表示定義了某種功能的接口

ConcreteComponent,具體構(gòu)件,實現(xiàn)了構(gòu)件接口(Component),表示實現(xiàn)具體功能的類。

Decorator,抽象裝飾類,與 Component 關(guān)聯(lián)并繼承了 Component 接口。

ConcreteDecorator,具體裝飾類,負(fù)責(zé)給 Component 添加額外的功能。

Component、ConcreteComponent 可以稱為被裝飾者。Decorator、ConcreteDecorator 可以稱為裝飾者。


實例探究

Component,抽象構(gòu)件,定義一個 Person 接口,具有 work 的功能。

public interface Person { void work();}

ConcreteComponent,具體構(gòu)件,實現(xiàn)了 Person 接口以及 work 功能。

public class Man implements Person { @Override public void work() { System.out.

Decorator,抽象裝飾類,關(guān)聯(lián)了被裝飾者實例并繼承了被裝飾者。

public abstract class FilterPerson implements Person { private Person person; public FilterPerson(Person person) { this.person = person; } public void work(){ person.work(); }}

ConcreteDecorator,具體裝飾類,為被裝飾者的功能添加額外的東西。

public class LazyMan extends FilterPerson { public LazyMan (Person person) { super(person); } public void work(){ try { // 休息休息再干活 Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } super.work(); }}

具體調(diào)用如下:

Person lazyMan = new LazyMan(new Man());lazyMan.work();

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 灵璧县| 肥城市| 闽侯县| 龙州县| 泾源县| 泰来县| 吉木萨尔县| 达孜县| 布尔津县| 仪征市| 古交市| 宜昌市| 仙游县| 呼和浩特市| 惠州市| 聊城市| 和平区| 昭平县| 达尔| 栾城县| 武胜县| 朝阳县| 筠连县| 楚雄市| 宣武区| 嘉荫县| 宁波市| 措美县| 鄂尔多斯市| 九台市| 容城县| 子洲县| 大厂| 蒙城县| 迁西县| 金华市| 金华市| 固阳县| 大宁县| 焦作市| 会同县|