大话设计模式3 装饰模式 的java代码实现
2014-08-10 14:43
591 查看
1,Person类(ConcreteComponent)
2,服饰类(Decorator)
3,具体服饰类(ConcreteFinery)
4,客户端测试类
package yx.designpattern.decorator; //Person类(ConcreteComponent) public class Person { private String name; public Person(){ } public Person(String name) { this.name = name; } public void show(){ System.out.println("装扮者:"+this.name); } }
2,服饰类(Decorator)
package yx.designpattern.decorator; //服饰类(Decorator) public class Finery extends Person { protected Person component; //打扮 public void decorate(Person component){ this.component=component; } @Override public void show() { if(component!=null){ component.show(); } } }
3,具体服饰类(ConcreteFinery)
package yx.designpattern.decorator; //具体服饰类(ConcreteFinery) public class ConcreteFineryA extends Finery { @Override public void show() { super.show(); System.out.println("已装扮服饰A"); } }
package yx.designpattern.decorator; //具体服饰类(ConcreteFinery) public class ConcreteFineryB extends Finery { @Override public void show() { super.show(); System.out.println("已装扮服饰B"); } }
package yx.designpattern.decorator; //具体服饰类(ConcreteFinery) public class ConcreteFineryC extends Finery { @Override public void show() { super.show(); System.out.println("已装扮服饰C"); } }
package yx.designpattern.decorator; //具体服饰类(ConcreteFinery) public class ConcreteFineryD extends Finery { @Override public void show() { super.show(); System.out.println("已装扮服饰D"); } }
package yx.designpattern.decorator; //具体服饰类(ConcreteFinery) public class ConcreteFineryE extends Finery { @Override public void show() { super.show(); System.out.println("已装扮服饰E"); } }
4,客户端测试类
package yx.designpattern.decorator; public class Test { public static void main(String[] args) { Person p1=new Person("小菜"); Finery f1=new ConcreteFineryA(); Finery f2=new ConcreteFineryB(); Finery f3=new ConcreteFineryC(); f1.decorate(p1); f2.decorate(f1); f3.decorate(f2); f3.show(); Person p2=new Person("大鸟"); Finery f4=new ConcreteFineryD(); Finery f5=new ConcreteFineryE(); f4.decorate(p2); f5.decorate(f4); f5.show(); Person p3=new Person("路人"); f5.decorate(p3);//可以按照任何顺序,任何组合方案进行组合 f2.decorate(f5); f4.decorate(f2); f1.decorate(f4); f3.decorate(f1); f3.show(); } }
相关文章推荐
- 大话设计模式2 策略模式 的java代码实现
- 《大话设计模式》读书笔记(C++代码实现) 第六章:装饰模式
- 大话设计模式之装饰模式代码实现-OC版
- 《大话设计模式》java实现之装饰器模式
- 《大话设计模式》读书笔记(C++代码实现) 第六章:装饰模式
- 《大话设计模式》代码JAVA版-第6章 装饰模式
- 大话设计模式1 简单工厂模式 的java代码实现
- 大话设计模式4 代理模式 的java代码实现
- 装饰模式c++代码实现
- 《大话设计模式》读书笔记(C++代码实现) 第二章:策略模式
- 《大话设计模式》代码JAVA版-第7章 代理模式
- 《大话设计模式》ruby版代码:装饰模式
- 将Facade装饰模式的代码由C#转为JAVA
- 设计模式之迭代器模式java实现代码
- 大话设计模式5 工厂方法模式 的java代码实现
- 设计模式之第4章-装饰模式(Java实现)
- 设计模式之迭代器模式java实现代码
- 《大话设计模式》读书笔记(C++代码实现) 第二章:策略模式
- java装饰着模式实现--字符小写输出
- 《大话设计模式》读书笔记(C++代码实现) 第一章:简单工厂模式