您的位置:首页 > 编程语言 > Java开发

Java 设计模式 - 装饰者模式

2017-03-04 16:31 316 查看

基本概念

装饰者模式的作用:

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

适配器模式的角色:

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();
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息