小菜要去见漂亮女孩,不知道穿什么衣服好,就开始一件一件的开始搭配,实验出最好效果的搭配...
package com.wzs.design;
/**
* 大话设计模式--page53 装饰模式
*
* @author Administrator
*
*/
public class DecorativePattern {
public static void main(String[] args) {
Person xc = new Person("小菜");
System.out.println("第一种装扮:");
WearSneakers pqx = new WearSneakers();// 破球鞋
BigTrouser kk = new BigTrouser();// 垮裤
Tshirts dtx = new Tshirts(); // 大体恤
pqx.decorate(xc);
kk.decorate(pqx);
dtx.decorate(kk);
dtx.show();
System.out.println("\n\n第二种装扮:");
WearLeatherShoes px = new WearLeatherShoes();// 皮鞋
WearSuit xz = new WearSuit();// 西服
WearTie ld = new WearTie();// 领带
px.decorate(xc);
ld.decorate(px);
xz.decorate(ld);
xz.show();
}
}
/*
* 人
*/
class Person {
private String name;
public Person() {
}
public Person(String name) {
this.name = name;
}
public void show() {
System.out.print(name + "的装扮.");
}
}
/*
* 服饰
*/
class Finery extends Person {
private Person person;
/*
* 装扮
*/
public void decorate(Person person) {
this.person = person;
}
@Override
public void show() {
if (null != person) {
person.show();
}
}
}
/*
* 大T恤
*/
class Tshirts extends Finery {
@Override
public void show() {
System.out.print("大T恤 ");
super.show();
}
}
/*
* 垮裤
*/
class BigTrouser extends Finery {
@Override
public void show() {
System.out.print("垮裤 ");
super.show();
}
}
/*
* 破球鞋
*/
class WearSneakers extends Finery {
@Override
public void show() {
System.out.print("破球鞋 ");
super.show();
}
}
/*
* 西装
*/
class WearSuit extends Finery {
@Override
public void show() {
System.out.print("西装 ");
super.show();
}
}
/*
* 领带
*/
class WearTie extends Finery {
@Override
public void show() {
System.out.print("领带 ");
super.show();
}
}
/*
* 皮鞋
*/
class WearLeatherShoes extends Finery {
@Override
public void show() {
System.out.print("皮鞋 ");
super.show();
}
}
输出结果:
第一种装扮:
大T恤 垮裤 破球鞋 小菜的装扮.
第二种装扮:
西装 领带 皮鞋 小菜的装扮.