您的位置:首页 > 其它

第六章 装饰模式

2016-03-30 23:19 295 查看
装饰模式将类的装饰功能从类中分离出来,只保留了类的核心职责,装饰逻辑(顺序)由调用者选择分配。

/**
* Created by hero on 16-3-30.
*/
public abstract class Person {
private String name;

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public Person() {
}

public Person(String name) {
this.name = name;
}

public abstract void show();
}
/**
* Created by hero on 16-3-30.
*/
public class Finery extends Person {
protected Person person;

public void Decorate(Person person) {
this.person = person;
}

@Override
public void show() {
if (this.person != null) {
person.show();
}
}
}
/**
* Created by hero on 16-3-30.
*/
public class TShirt extends Finery {
public void show() {
super.show();
System.out.println("T-shirt");
}
}
/**
* Created by hero on 16-3-30.
*/
public class Trouser extends Finery {
public void show() {
super.show();
System.out.println("Trouser");
}
}
/**
* Created by hero on 16-3-30.
*/
public class ConcretePerson extends Person {
public ConcretePerson(String name) {
setName(name);
}

@Override
public void show() {
System.out.println(getName());
}
}
public class Main {

public static void main(String[] args) {
ConcretePerson person = new ConcretePerson("小明");
TShirt tShirt = new TShirt();
Trouser trouser = new Trouser();
tShirt.Decorate(person);
trouser.Decorate(tShirt);
trouser.show();
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: