标签:
1 package com.shejimoshi.structural.Decorator; 2 3 4 /** 5 * 功能:这个是我们装饰器的基类,用来生成被装饰类和装饰器类 6 * 时间:2016年2月25日上午10:05:37 7 * 作者:cutter_point 8 */ 9 public abstract class Component 10 { 11 //这个方法就是我们装饰器要进行装饰的操作 12 public abstract void tuo(); 13 }
1 package com.shejimoshi.structural.Decorator; 2 3 4 /** 5 * 功能:动态地给一个对象添加一些额外的职责。就增加功能来说装饰器模式比生成子类更加灵活 6 * 装饰器就是用装饰器类来对我们的私有成员(装饰对象)进行相应的扩展功能 7 * 适用:在不影响其他对象的情况下,以动态、透明的方式给单个对象添加职责 8 * 处理那些可以撤销的职责 9 * 时间:2016年2月25日上午9:45:43 10 * 作者:cutter_point 11 */ 12 public class Person extends Component 13 { 14 private String name; 15 16 public Person(String name) 17 { 18 this.name = name; 19 } 20 21 @Override 22 public void tuo() 23 { 24 System.out.print(this.name + "准备上床睡觉\t"); 25 } 26 }
1 package com.shejimoshi.structural.Decorator; 2 3 4 5 /** 6 * 功能:装饰器基类,用来对相应的对象进行装饰 7 * 时间:2016年2月25日上午10:15:02 8 * 作者:cutter_point 9 */ 10 public abstract class Decorator extends Component 11 { 12 protected Component component; 13 14 public Decorator(Component component) 15 { 16 this.component = component; 17 } 18 19 @Override 20 public void tuo() 21 { 22 if(component != null) 23 component.tuo(); 24 } 25 26 }
1 package com.shejimoshi.structural.Decorator; 2 3 4 /** 5 * 功能:对于一个操作,上衣 6 * 时间:2016年2月25日上午10:18:28 7 * 作者:cutter_point 8 */ 9 public class Shangyi extends Decorator 10 { 11 //构造函数 12 public Shangyi(Component component) 13 { 14 super(component); 15 } 16 17 @Override 18 public void tuo() 19 { 20 super.tuo(); 21 System.out.print("脱上衣\t"); 22 } 23 }
1 package com.shejimoshi.structural.Decorator; 2 3 4 /** 5 * 功能:对应裤子操作 6 * 时间:2016年2月25日上午10:49:03 7 * 作者:cutter_point 8 */ 9 public class Kuzhi extends Decorator 10 { 11 12 public Kuzhi(Component component) 13 { 14 super(component); 15 } 16 17 @Override 18 public void tuo() 19 { 20 super.tuo(); 21 System.out.print("脱掉裤子\t"); 22 } 23 24 }
1 package com.shejimoshi.structural.Decorator; 2 3 4 /** 5 * 功能:装饰器模式 6 * 时间:2016年2月25日上午11:13:55 7 * 作者:cutter_point 8 */ 9 public class Test 10 { 11 public static void main(String[] args) 12 { 13 Component person = new Person("cutter_point"); 14 Decorator shangyi = new Shangyi(person); 15 shangyi.tuo(); 16 System.out.println(); 17 Decorator kuzhi = new Kuzhi(person); 18 kuzhi.tuo(); 19 } 20 }
测试结果:
cutter_point准备上床睡觉 脱上衣 cutter_point准备上床睡觉 脱掉裤子
标签:
原文地址:http://www.cnblogs.com/cutter-point/p/5216410.html