A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 洛漠O_o 中级黑马   /  2014-7-28 16:17  /  672 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 洛漠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. */
复制代码


0 个回复

您需要登录后才可以回帖 登录 | 加入黑马