设计模式2--装饰模式(the decorator design pattern)
2015-09-11 13:36
603 查看
允许多次实现一种方法,避免每次改动代码。
没有使用装饰模式:
Computer description()
Computer new_description()
Computer newer_description()
使用了装饰模式:
Computer description()
Computer description()
Disk description()
Computer description()
Disk description()
Monitor description()
没有使用装饰模式:
Computer description()
Computer new_description()
Computer newer_description()
使用了装饰模式:
Computer description()
Computer description()
Disk description()
Computer description()
Disk description()
Monitor description()
public class Computer { public Computer(){} public String description() { return "You're getting a computer."; } } public class Computer { public Computer(){} public String description() { return "You're getting a computer and a disk."; } } public class Computer { public Computer(){} public String description() { return "You're getting a computer and a disk and a monitor."; } } public class Computer { public Computer(){} public String description() { return "computer"; } } public abstract class ComponentDecorator extends Computer { public abstract String description(); } public class Disk extends ComponentDecorator { Computer computer; public Disk(Computer c) { computer = c; } public String description() { return computer.description()+" and a disk"; } } public class Monitor extends ComponentDecorator { Computer computer; public Monitor(Computer c) { computer = c; } public String description() { return computer.description()+" and a monitor"; } } public class Test { public static void main(String args[]) { Computer computer = new Computer(); computer = new Disk(computer); computer = new Monitor(computer); computer = new Monitor(computer); System.out.println("You're getting a " + computer.description() + "."); } }
相关文章推荐
- 【Linux】Ubuntu14.04安装bridge-utils安装brctl
- css块级元素和行内元素详细解析
- 主机hdmi接口连上第二块显示器后,耳机没有声音
- 第二周项目(5):体验复杂度(2)
- 年终巨献 史上最全 ——LINQ to SQL语句
- 对memcached使用的总结和使用场景
- 可替换参数在SharePoint和VS中的使用
- [私]项目开发流程总结
- Codeforces Round #319 (Div. 2) B C D
- linux 中的单引号 和双引号有什么区别
- Android APK加壳技术方案【2】
- Terminal查看表结构
- 亚信联创2011.9.17招聘会笔试题
- 循环输出10次ABC
- 开始QT+OpenCV学问
- 股票助手-您的理财好帮手
- VirtualBox5.0.X 安装后不能联网问题描述及临时解决方案
- 关于CH340在STM32实现一键下载电路的研究(转)
- codecombat安息之云山峰32-36关及森林49关代码分享
- Boost - 序列化 (Serialization) (写得很好**)