黑马程序员技术交流社区

标题: 装饰模式的理解……拿来水一贴 [打印本页]

作者: 洛漠O_o    时间: 2014-7-28 16:17
标题: 装饰模式的理解……拿来水一贴
本帖最后由 洛漠O_o 于 2014-7-28 16:20 编辑

装饰模式是在不必改变原类文件和使用继承的情况下,动态地扩展一个对象的功能。它是通过创建一个包装对象,也就是装饰来包裹真实的对象。
Decorator Pattern和Single Pattern都是软件设计模式中比较简单的模式。
根据我个人的理解做了下图:

  1. public class Test {
  2.         public static void main(String[] args) {
  3.                 IBaseDecorator oneDecorator =new OneDecorator();
  4.                 IBaseDecorator twoDecorator =new TwoDecorator(oneDecorator);
  5.                 System.out.println(twoDecorator.sysOut());
  6.         }
  7. }
  8. //装饰类的接口
  9. interface IBaseDecorator {
  10.         public String sysOut();
  11. }
  12. //第一个实现接口类的实体,我叫做鸡肋(基类)
  13. class OneDecorator implements IBaseDecorator {
  14.         @Override
  15.         public String sysOut() {
  16.                 return "-【最原始的类--我是最原始的信息--最原始的类结束】-";
  17.         }
  18. }
  19. //第二个实现接口类的实体,有一个构造方法
  20. class TwoDecorator implements IBaseDecorator {
  21.         private IBaseDecorator twoDecorator;
  22.         public TwoDecorator(IBaseDecorator twoDecorator) {//声明的是接口IBaseDecorator,所以凡是实现该接口类的实体,都可以传进来
  23.                 this.twoDecorator = twoDecorator;
  24.         }
  25.         @Override
  26.         public String sysOut() {//对传进来的类进行处理,为了说明原理,我这里只是简单处理下
  27.                 return "【对其进行装饰==" + twoDecorator.sysOut() + "==对其进行装饰结束】";
  28.         }
  29. }
  30. /*打印结果:
  31. 【对其进行装饰==-【最原始的类--我是最原始的信息--最原始的类结束】-==对其进行装饰结束】
  32. */
复制代码







欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2