java设计模式之装饰者模式
2015-07-09 17:19
543 查看
实例代码:
// 抽象类 Girl public abstract class Girl { String description = "no particular"; public String getDescription(){ return description; } } // 美国女孩 public class AmericanGirl extends Girl { public AmericanGirl() { description = "+AmericanGirl"; } } // 国产妹子 public class ChineseGirl extends Girl { public ChineseGirl() { description = "+ChineseGirl"; } } // 装饰者 public abstract class GirlDecorator extends Girl { public abstract String getDescription(); } // 下面以美国女孩示例 // 给美国女孩加上金发 public class GoldenHair extends GirlDecorator { private Girl girl; public GoldenHair(Girl g) { girl = g; } @Override public String getDescription() { return girl.getDescription() + "+with golden hair"; } } // 加上身材高大的特性 public class Tall extends GirlDecorator { private Girl girl; public Tall(Girl g) { girl = g; } @Override public String getDescription() { return girl.getDescription() + "+is very tall"; } } // 检验一下 public class Main { public static void main(String[] args) { Girl g1 = new AmericanGirl(); System.out.println(g1.getDescription()); GoldenHair g2 = new GoldenHair(g1); System.out.println(g2.getDescription()); Tall g3 = new Tall(g2); System.out.println(g3.getDescription()); // 你也可以一步到位 // Girl g = new Tall(new GoldenHair(new AmericanGirl())); } }
相关文章推荐
- Java7并发编程实战(一) 线程的中断
- Java线程池学习笔记一
- java-集合上
- Java垃圾回收机制_(转载)
- LeetCode103 BinaryTreeZigzagLevelOrderTraversal(二叉树Z形层次遍历) Java题解
- eclipse 中 properties 显示中文为\
- Java中的线程同步技术
- java中文件的读取和写入
- Spring学习(20)--- Schema-based AOP(基于配置的AOP实现) -- 配置切入点pointcut
- java.io.Serializable浅析
- 关于使用Java代码解决兔子问题
- 使用 Lombok 简化项目中无谓的Java代码
- java-String中的 intern()
- java设计模式之适配器模式
- Java类加载器
- Java tutorial 3
- Java中的static关键字解析(转自海子)__为什么main方法必须是static的,因为程序在执行main方法的时候没有创建任何对象,因此只有通过类名来访问。
- JAVA基础题
- Ubuntu 12.04安装Sun JDK 6
- java 导出excel