首页 > 编程 > Java > 正文

Java 设计模式 - 装饰者模式

2019-11-06 07:37:28
字体:
来源:转载
供稿:网友

基本概念

装饰者模式的作用:

装饰模式就是给一个对象增加一些新的功能,而且是动态的,要求装饰对象和被装饰对象实现同一个接口,装饰对象持有被装饰对象的实例。

适配器模式的角色:

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();

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表