设计模式: Decorator 装饰者(java)
来源:互联网 发布:光伏数据采集器品牌 编辑:程序博客网 时间:2024/05/01 00:15
1.动机
1)想为component丰富功能,但又不想创建component的子类
2)只需要丰富对象的功能,而不是类
2.实现
继承基类或者抽象类
将抽象类对象作为自己的成员变量,并实现基类或者抽象类的方法(装饰器)
其他类继承该装饰器,并丰富相应的功能。
2.与strategy策略模式对比
策略模式是将接口或对象作为参数传到类里,该类调用参数的方法。相当于改变类的内核,并且不依赖于该类;
装饰者模式是聚合该类,并添加方法。相当于给类装了个外壳,依赖于该类,所以该类不能太大。
3.实现
//: generics/decorator/Decoration.javapackage generics.decorator;import java.util.*;//基类class Basic { private String value; public void set(String val) { value = val; } public String get() { return value; }}//继承基类,聚合基类对象并并实现基类方法class Decorator extends Basic { protected Basic basic; //聚合基类对象 public Decorator(Basic basic) { this.basic = basic; } public void set(String val) { basic.set(val); } public String get() { return basic.get(); }}//继承装饰器并丰富功能class TimeStamped extends Decorator { private final long timeStamp; public TimeStamped(Basic basic) { super(basic); timeStamp = new Date().getTime(); } public long getStamp() { return timeStamp; }}class SerialNumbered extends Decorator { private static long counter = 1; private final long serialNumber = counter++; public SerialNumbered(Basic basic) { super(basic); } public long getSerialNumber() { return serialNumber; }}public class Decoration { public static void main(String[] args) { TimeStamped t = new TimeStamped(new Basic()); TimeStamped t2 = new TimeStamped( new SerialNumbered(new Basic())); //! t2.getSerialNumber(); // Not available SerialNumbered s = new SerialNumbered(new Basic()); SerialNumbered s2 = new SerialNumbered( new TimeStamped(new Basic())); //! s2.getStamp(); // Not available }} ///:~
0 0
- Java设计模式:装饰者模式(Decorator)
- 设计模式: Decorator 装饰者(java)
- Decorator装饰者设计模式
- java设计模式之装饰者模式Decorator
- Java设计模式-装饰者模式(Decorator Pattern)
- Java设计模式(十):装饰者模式Decorator
- java设计模式——装饰者模式Decorator
- Java设计模式之装饰者模式(Decorator pattern)
- Java设计模式:装饰者模式(Decorator Pattern)
- Java设计模式--装饰者模式【Decorator Pattern】
- Java设计模式学习—装饰者模式(Decorator)
- Java设计模式-----Decorator装饰模式
- java设计模式:装饰器模式[Decorator]
- java设计模式:装饰器模式[Decorator]
- Java设计模式 - Decorator(装饰模式)
- Java设计模式-----Decorator装饰模式
- java设计模式之装饰模式Decorator
- Java设计模式-----Decorator装饰模式
- POJ 1001.Exponentiation
- 网络环境查看命令
- 设计模式
- Android 高德地图集成 地图展示+定位+路线规划+各种原有图标的隐藏处理
- 软件许可证License
- 设计模式: Decorator 装饰者(java)
- const 与typedef 共同声明指针
- 子元素在父元素里水平居中
- JAVA 对象引用
- linux ffmpeg 源码安装教程
- ruguoshijieqihei
- LeetCode 263. Ugly Number
- 华为员工工作生活及待遇全面揭秘
- 树形DP-POJ-2342-Anniversary party