装饰设计模式
2015-08-04 09:16
183 查看
package cn.itcast.decorator; public class DecoratorDemo { public static void main(String[] args) { Person p = new Person(); p.eat(); } } class Person{ public void eat() { System.out.println("我正在吃···········"); } }
首先我们有了人这个类,创建了他的对象,然后人是需要吃饭的,但是吃饭之前他需要先吃一点甜点。但是这回人的对象p已经创建出来了。之中并没有先吃甜点的方法。这个时候如果我们是用继承,创建一个他的子类。拓展它的功能,显然非常的不合适。于是便有了下面一个巧妙的解决方法。
package cn.itcast.decorator; public class DecoratorDemo { /** * 装饰设计模式 * 解决的问题是:给已有的对象提供额外增强的功能。还不对原有对象进行修改 * 对对象而言是透明的 就像什么都没有发生过一样 * @param args */ public static void main(String[] args) { Person p = new Person(); SuperPerson sp = new SuperPerson(p); sp.eat(); } } class Person{ public void eat() { System.out.println("我正在吃···········"); } } class SuperPerson{ private Person p; public SuperPerson(Person p) { this.p = p; } public void eat() { System.out.println("先吃点甜点"); p.eat(); } }
这就是装饰设计模式,java的IO流中大量的用到了这个模式。
相关文章推荐
- BMC测试架构
- 使用Nexus搭建Maven私服(2)
- 如何编译Linux内核
- js分享插件
- 浅谈python多线程和队列管理shell程序
- android design library提供的TabLayout的用法
- org.springframework.context.ApplicationContextAware使用理解
- Poj1258 Agri-Net (Prim)
- poj 3301 Texas Trip(旋转+三分)
- NOIP提高组模拟 百团大战
- 100分程序员的8个习惯
- aidl 个人心得
- DAVE SDK 4.1.2 Help content (翻译)——manifest
- 转--Could not create the view: An unexpected exception was thrown.问题解决
- 『Spring.NET+NHibernate+泛型』框架搭建之BLL(四)
- Java设计模式(二) 之 迭代器模式
- Kali Linux 卸载gnome桌面环境
- oj 中G++和C++区别
- 用svg实现上传图片进度条效果
- hdu5001dp