裝飾者模式的作用:
裝飾模式就是給一個對象增加一些新的功能,而且是動態(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();新聞熱點
疑難解答
圖片精選