簡介 裝飾器模式(Decorator Pattern)允許向一個現有的對象添加新的功能,同時又不改變其結構。這種類型的設計模式屬於結構型模式,它是作為現有的類的一個包裝。 這種模式創建了一個裝飾類,用來包裝原有的類,併在保持類方法簽名完整性的前提下,提供了額外的功能。我們通過下麵的實例來演示裝飾器模 ...
簡介
裝飾器模式(Decorator Pattern)允許向一個現有的對象添加新的功能,同時又不改變其結構。這種類型的設計模式屬於結構型模式,它是作為現有的類的一個包裝。
這種模式創建了一個裝飾類,用來包裝原有的類,併在保持類方法簽名完整性的前提下,提供了額外的功能。我們通過下麵的實例來演示裝飾器模式的用法。其中,我們將把一個形狀裝飾上不同的顏色,同時又不改變形狀類。
功能展現
功能介紹
- 手機預設都有一個打電話功能
- 在不改變源代碼的情況下,給手機增強默些功能,比如:打電話前,放首歌。。。。。。。
代碼實現
手機介面類:Iphone.java
package com.cyb.ssm.design_pattern.decorate; public interface Iphone { void call(); }
介面實現類(Iphone6):Iphone6.java
package com.cyb.ssm.design_pattern.decorate; public class Iphone6 implements Iphone{ @Override public void call() { System.out.println("使用iphone6打電話,性能杠杠滴"); } }
裝飾類(重點):IphoneDecorate.java
package com.cyb.ssm.design_pattern.decorate; /** * 裝飾類 * * @author apple * */ public class IphoneDecorate implements Iphone { private Iphone Iphone; public IphoneDecorate(Iphone iphone) { super(); this.Iphone = iphone; } @Override public void call() { System.out.println("人猿泰山music。。。"); Iphone.call(); } }
測試類:TestDecorate.java
package com.cyb.ssm.design_pattern.decorate; import org.junit.Test; public class TestDecorate { @Test public void test() { Iphone iphone=new IphoneDecorate(new Iphone6()); iphone.call(); } }