浅谈JAVA设计模式之——装饰模式(Decorator)
来源:互联网 发布:数据离散程度的指标 编辑:程序博客网 时间:2024/06/05 20:24
转载请注明出处:http://blog.csdn.net/l1028386804/article/details/45464445
ConcreteComponent
Decorator
ConcreteDecorator
Test
一、概述
动态地给一个对象添加一些额外的职责。就增加功能来说,Decorator模式相比生成子类更为灵活。
二、适用性
1.在不影响其他对象的情况下,以动态、透明的方式给单个对象添加职责。
2.处理那些可以撤消的职责。
3.当不能采用生成子类的方法进行扩充时。
三、参与者
1.Component 定义一个对象接口,可以给这些对象动态地添加职责。
2.ConcreteComponent 定义一个对象,可以给这个对象添加一些职责。
3.Decorator 维持一个指向Component对象的指针,并定义一个与Component接口一致的接口。
4.ConcreteDecorator 向组件添加职责。
四、类图
五、示例
Component
package com.lyz.design.decorator;/** * 定义Component接口Person * @author liuyazhuang * */public interface Person { void eat();}
ConcreteComponent
package com.lyz.design.decorator;/** * Person接口的实现类Man * @author liuyazhuang * */public class Man implements Person {public void eat() {System.out.println("男人在吃");}}
Decorator
package com.lyz.design.decorator;/** * Decorator抽象类实现Person接口 * @author liuyazhuang * */public abstract class Decorator implements Person { protected Person person; public void setPerson(Person person) { this.person = person; } public void eat() { person.eat(); }}
ConcreteDecorator
package com.lyz.design.decorator;/** * Decorator的子类 * @author liuyazhuang * */public class ManDecoratorA extends Decorator { public void eat() { super.eat(); reEat(); System.out.println("ManDecoratorA类"); } public void reEat() { System.out.println("再吃一顿饭"); }}
package com.lyz.design.decorator;/** * Decorator的子类 * @author liuyazhuang * */public class ManDecoratorB extends Decorator { public void eat() { super.eat(); System.out.println("==============="); System.out.println("ManDecoratorB类"); }}
Test
package com.lyz.design.decorator;/** * 测试类 * @author liuyazhuang * */public class Test { public static void main(String[] args) { Man man = new Man(); ManDecoratorA md1 = new ManDecoratorA(); ManDecoratorB md2 = new ManDecoratorB(); md1.setPerson(man); md2.setPerson(md1); md2.eat(); }}
result
男人在吃再吃一顿饭ManDecoratorA类===============ManDecoratorB类
0 0
- 浅谈JAVA设计模式之——装饰模式(Decorator)
- Java设计模式透析之 ——装饰模式(Decorator )
- 浅谈Java设计模式(七)装饰模式(Decorator)
- 浅谈 java 设计模式--装饰模式(Decorator pattern)
- 设计模式之——装饰者模式(Decorator)
- java设计模式——装饰模式(Decorator)
- java设计模式7——装饰模式(Decorator)
- Java设计模式——装饰模式(Decorator Pattern)
- java设计模式——装饰模式(Decorator)
- Java设计模式学习—装饰者模式(Decorator)
- java设计模式之装饰模式Decorator
- JAVA设计模式之装饰模式(decorator)
- java设计模式之Decorator(装饰)模式
- java.io.*中的设计模式之 装饰(Decorator)模式
- 【设计模式】之装饰模式(Decorator)
- 设计模式之装饰模式(Decorator)
- 设计模式之 装饰模式(Decorator)
- 设计模式之装饰模式(Decorator)
- 常用JDBC驱动与连接字符串整理
- termios结构体说明
- iOS 开发一周小节
- Archlinux sshd服务启动优化;
- win8系统磁盘占用率高的解决方法
- 浅谈JAVA设计模式之——装饰模式(Decorator)
- Android控件之SeekBar
- 归并排序算法(C++版)
- Android事件分发机制完全解析,带你从源码的角度彻底理解(上)
- Android事件分发机制完全解析,带你从源码的角度彻底理解(下)
- python实现一个简单的爬虫
- 算法切题
- 【Windows 10 IoT - 1】Window 10系统安装(树莓派 Pi2)
- MySQL 图形化管理工具介绍