摘要:實現(xiàn)對衣服進行抽象有一件襯衫襯衫給衣服裝飾一些飾品,對飾品進行抽象在衣服上加一個泰迪熊泰迪熊在衣服上加一朵花花兒實現(xiàn)一個裝飾有泰迪熊花兒的襯衫這個寫法是不是讓你想起什么一件帶花兒泰迪熊的襯衫出來了衣服的組成部分
描述:采用組合的方式將多個同類對象任意搭配組成一個對象,達到增強效果
場景:比如一件衣服如果只是一件襯衫,那么太單調(diào)了,如果在這衣服上加上泰迪熊、花兒,那么這件衣服就特有喜感了(相當(dāng)于衣服的功能加強了,可以讓人笑了)。
實現(xiàn):
// 對衣服進行抽象 abstract class Clothes { abstract String description(); }
// 有一件襯衫 class Shirt extends Clothes { @Override String description() { return "襯衫"; } }
// 給衣服裝飾一些飾品,對飾品進行抽象 abstract class Decorator extends Clothes { Clothes clothes; Decorator(Clothes clothes) { this.clothes = clothes; } }
// 在衣服上加一個泰迪熊 class TedBearDecorator extends Decorator { TedBearDecorator(Clothes clothes) { super(clothes); } @Override String description() { return this.clothes.description() + "," + "泰迪熊"; } }
//在衣服上加一朵花 class FlowerDecorator extends Decorator { FlowerDecorator(Clothes clothes) { super(clothes); } @Override String description() { return this.clothes.description() + "," + "花兒"; } }
// 實現(xiàn)一個裝飾有泰迪熊、花兒的襯衫 public class DecoratorDemo { public static void main(String[] args) { // 這個寫法是不是讓你想起什么 Clothes tedFlowerShirt = new TedBearDecorator(new FlowerDecorator(new Shirt())); // 一件帶花兒、泰迪熊的襯衫出來了 System.out.println("衣服的組成部分:" + tedFlowerShirt.description()); } }
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/64014.html
摘要:裝飾者模式組成結(jié)構(gòu)抽象構(gòu)件給出抽象接口或抽象類,以規(guī)范準(zhǔn)備接收附加功能的對象。裝飾者模式圖解裝飾者模式應(yīng)用場景需要擴展一個類的功能,或給一個類添加附加職責(zé)。裝飾者對象接受所有來自客戶端的請求。參考資料設(shè)計模式 一、了解裝飾者模式 1.1 什么是裝飾者模式 裝飾者模式指的是在不必改變原類文件和使用繼承的情況下,動態(tài)地擴展一個對象的功能。它是通過創(chuàng)建一個包裝對象,也就是裝飾者來包裹真實的對...
摘要:相關(guān)設(shè)計模式裝飾者模式和代理模式裝飾者模式關(guān)注再一個對象上動態(tài)添加方法代理模式關(guān)注再對代理對象的控制訪問,可以對客戶隱藏被代理類的信息裝飾著模式和適配器模式都叫包裝模式關(guān)于新職責(zé)適配器也可以在轉(zhuǎn)換時增加新的職責(zé),但主要目的不在此。 0x01.定義與類型 定義:裝飾模式指的是在不必改變原類文件和使用繼承的情況下,動態(tài)地擴展一個對象的功能。它是通過創(chuàng)建一個包裝對象,也就是裝飾來包裹真實的...
摘要:裝飾者模式遵循了開閉原則,對擴展開放,對修改關(guān)閉。但是在使用裝飾者模式的同時可能會引入大量小類,而且使用裝飾者模式除了實例化組件外,還要把組件包裝進裝飾者,會使代碼顯得不易理解。 1. 簡介 ??裝飾者模式是一種結(jié)構(gòu)型模式,它可以動態(tài)的將責(zé)任附加到對象上,在擴展功能方面,它比繼承更有彈性。裝飾者模式遵循了開閉原則,對擴展開放,對修改關(guān)閉。??雖然在裝飾者模式中也使用了繼承,但是繼承只是...
摘要:簡介代理模式和裝飾者模式是兩種常見的設(shè)計模式。這里通過構(gòu)造函數(shù)的參數(shù)將被代理對象傳入到代理中,也可以通過其它方式,如提供一個方法。下面是的代碼輸出首先依然是先創(chuàng)建一個需要被代理的對象,然后把它傳入到的構(gòu)造函數(shù)中。 簡介 代理模式和裝飾者模式是兩種常見的設(shè)計模式。代理模式是為其它對象提供一種代理以控制對這個對象的訪問。在某些情況下,一個對象不適合或者不能直接引用另一個對象,而代理對象可以...
摘要:這是設(shè)計模式系列的第二篇,系列文章目錄如下用一句話總結(jié)那些殊途同歸的設(shè)計模式工廠策略模版方法美顏相機中的設(shè)計模式裝飾者模式幾乎所有的設(shè)計模式都是通過增加一層抽象來解決問題。 這是設(shè)計模式系列的第二篇,系列文章目錄如下: 用一句話總結(jié)那些殊途同歸的設(shè)計模式:工廠=?策略=?模版方法 美顏相機中的設(shè)計模式——裝飾者模式 幾乎所有的設(shè)計模式都是通過增加一層抽象來解決問題。 上一篇中提...
摘要:聲明這個系列為閱讀設(shè)計模式與開發(fā)實踐曾探著一書的讀書筆記裝飾者模式的定義裝飾者模式能夠在不改變對象自身的基礎(chǔ)上,在程序運行期間給對像動態(tài)的添加職責(zé)。與繼承相比,裝飾者是一種更輕便靈活的做法。裝飾者模式的作用就是為對象動態(tài)的加入某些行為。 聲明:這個系列為閱讀《JavaScript設(shè)計模式與開發(fā)實踐》 ----曾探@著一書的讀書筆記 裝飾者模式的定義: 裝飾者(decorator)模式能...
閱讀 1021·2021-10-27 14:15
閱讀 2775·2021-10-25 09:45
閱讀 1941·2021-09-02 09:45
閱讀 3367·2019-08-30 15:55
閱讀 1807·2019-08-29 16:05
閱讀 3203·2019-08-28 18:13
閱讀 3117·2019-08-26 13:58
閱讀 455·2019-08-26 12:01