装饰者模式的作用:
装饰模式就是给一个对象增加一些新的功能,而且是动态的,要求装饰对象和被装饰对象实现同一个接口,装饰对象持有被装饰对象的实例。适配器模式的角色:
Component,抽象构件,它表示定义了某种功能的接口
ConcreteComponent,具体构件,实现了构件接口(Component),表示实现具体功能的类。
Decorator,抽象装饰类,与 Component 关联并继承了 Component 接口。
ConcreteDecorator,具体装饰类,负责给 Component 添加额外的功能。
Component、ConcreteComponent 可以称为被装饰者。Decorator、ConcreteDecorator 可以称为装饰者。
Component,抽象构件,定义一个 Person 接口,具有 work 的功能。
public interface Person { void work();}ConcreteComponent,具体构件,实现了 Person 接口以及 work 功能。
public class Man implements Person { @Override public void work() { System.out.PRintln("man is working"); }}Decorator,抽象装饰类,关联了被装饰者实例并继承了被装饰者。
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(); }}具体调用如下:
Person lazyMan = new LazyMan(new Man());lazyMan.work();新闻热点
疑难解答