设计模式-7-装饰器模式
2017-07-26 23:59
246 查看
装饰器模式:允许向一个现有的对象添加新的功能,同时又不改变其结构。他作为一个现有的类的封装。
1.定义一个接口作为原始类
package com.structuralPattern.decorator.edition1;
public interface Primitive {
void operation();
}
2.Source类继承Primitive并实现operation方法
package com.structuralPattern.decorator.edition1;
public class Source implements Primitive{
@Override
public void operation() {
System.out.println("原始类的方法");
}
}
3.定义装饰器类(明显Decorator中使用了“对象适配器模式”,通过定义变量primitive类承接Source的实例,利用构造函数进行初始化)
package com.structuralPattern.decorator.edition1;
public class Decorator implements Primitive {
public Primitive primitive;
public Decorator(Primitive primitive) {
this.primitive = primitive;
}
@Override
public void operation() {
}
}
4.定义实际装饰器
package com.structuralPattern.decorator.edition1;
public class Decorator1 extends Decorator{
public Decorator1(Primitive primitive) {
super(primitive);
}
@Override
public void operation() {
System.out.println("第一个装饰器前--添加的新功能");
primitive.operation();
System.out.println("第一个装饰器后--添加的新功能");
}
}
1.定义一个接口作为原始类
package com.structuralPattern.decorator.edition1;
public interface Primitive {
void operation();
}
2.Source类继承Primitive并实现operation方法
package com.structuralPattern.decorator.edition1;
public class Source implements Primitive{
@Override
public void operation() {
System.out.println("原始类的方法");
}
}
3.定义装饰器类(明显Decorator中使用了“对象适配器模式”,通过定义变量primitive类承接Source的实例,利用构造函数进行初始化)
package com.structuralPattern.decorator.edition1;
public class Decorator implements Primitive {
public Primitive primitive;
public Decorator(Primitive primitive) {
this.primitive = primitive;
}
@Override
public void operation() {
}
}
4.定义实际装饰器
package com.structuralPattern.decorator.edition1;
public class Decorator1 extends Decorator{
public Decorator1(Primitive primitive) {
super(primitive);
}
@Override
public void operation() {
System.out.println("第一个装饰器前--添加的新功能");
primitive.operation();
System.out.println("第一个装饰器后--添加的新功能");
}
}
package com.structuralPattern.decorator.edition1; public class Decorator2 extends Decorator{ public Decorator2(Primitive primitive) { super(primitive); } @Override public void operation() { System.out.println("第二个装饰器前--添加的新功能"); primitive.operation(); System.out.println("第二个装饰器后--添加的新功能"); } }
package com.structuralPattern.decorator.edition1; public class DecoratorTest { public static void main(String[] args) { Primitive primitive = new Source(); //装饰类对象 Primitive pd1 = new Decorator1(primitive); pd1.operation(); //装饰类对象 Primitive pd2 = new Decorator1(primitive); pd2.operation(); System.out.println("============"); Primitive pd = new Decorator1(new Decorator2(primitive)); pd.operation(); } }
相关文章推荐
- Header First设计模式学习笔记——装饰器模式
- 设计模式学习(三)——装饰器模式
- PHP设计模式-装饰器模式
- PHP设计模式——装饰器模式(decorator)
- Kotlin 设计模式-装饰器
- java学习笔记-设计模式8(装饰器模式)
- Java设计模式——装饰器模式、适配器模式、外观模式
- 设计模式之: Decorator(装饰器)模式
- java设计模式之 装饰器模式
- 设计模式——装饰器模式
- 装饰器模式的设计原理
- 设计模式——装饰器(Decorator)
- Java设计模式透析之 —— 装饰器模式(Decorator)
- 23种设计模式 第二部分 结构模式(2) 装饰器模式
- Java设计模式——装饰器模式(Decorator)
- 详解设计模式——装饰器模式
- 说说设计模式~装饰器模式(Decorator)~多功能消息组件的实现
- Java设计模式(四) 装饰器模式 代理器模式
- 设计模式——装饰器模式
- Python装饰器 decorator 设计模式