`
wgq837051
  • 浏览: 86022 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Decorator装饰器模式

阅读更多

Decorator装饰器,就是动态地给一个对象添加一些额外的职责,装饰器模式具有如下的特征:
a. 它必须具有一个装饰的对象
b. 它必须拥有与被装饰对象相同的接口
c. 它可以给被装饰对象添加额外的功能
其最主要特征:保持接口,增强性能。 

 

 

其主要代码如下所示:
 

package decorator;

/**
 * 源接口
 * @author lenovo
 *
 */
public interface Sourcable {
	public void operation();
}

 

package decorator;

/**
 * 源类
 * @author lenovo
 *
 */
public class Source implements Sourcable {

	public void operation() {
		// TODO Auto-generated method stub
		System.out.println("源类方法");
	}

}

 

package decorator;

/**
 * 装饰器类
 * @author lenovo
 *
 */
public class Decoator implements Sourcable {
	
	private Sourcable source;
	public Decoator(Sourcable source){
		this.source = source;
	}
	public void operation() {
		// TODO Auto-generated method stub
	    //调用被装饰类的方法
		source.operation();
		//新增加的功能
		operation1();
	}
	private void operation1(){
		System.out.println("新增加的功能");
	}

}

 

package decorator;

public class DecatorTest {

	/**
	 * 测试类
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Sourcable source = new Source();
		Sourcable decoator = new Decoator(source);
		decoator.operation();
	}

}

 

 源类Source与装饰类Decoator拥有共同的接口Sourcable,装饰类Decoator对源类Source的功能进行了相应的添加。

装饰器模式一般在以下情况使用:

需要扩展一个类的功能,或给一个类增加附加责任。

需要动态地给一个对象增加功能,这些功能可以动态撤消。

需要增加一些基本的排列组合产生大量的功能,从而使继承关系变得不现实。

  • 大小: 10.8 KB
分享到:
评论

相关推荐

    jouryfirst#weekly-1#175.精读《设计模式 - Decorator 装饰器模式》1

    “就增加功能来说,Decorator 模式相比生成子类更为灵活” 这句话的含义是,组合比继承更灵活,当可拓展的功能很多时,继承方案会产生大量的子类,而组合可以提

    分析Python中设计模式之Decorator装饰器模式的要点

    主要介绍了Python中设计模式之Decorator装饰器模式模式,文中详细地讲解了装饰对象的相关加锁问题,需要的朋友可以参考下

    23种Python设计模式示例演示源码包.rar

    23种Python设计模式示例演示源码包,比如包括了工厂模式、Bridge桥接模式、Builder构建模式、Facade外观模式、Adapter适配器模式,Composite组合模式、Decorator装饰器模式,FactoryMethod工厂方法模式、Flyweight享...

    装饰器(Decorator)模式

    装饰器(Decorator)模式 详细教程,简明易懂,非常清晰的,附带有代码示例。

    c++设计模式-结构型模式-装饰器模式

    c++设计模式-结构型模式-装饰器模式;QT工程;c++简单源码; 装饰器(Decorator)模式的定义:指在不改变现有对象结构的情况下,动态地给该对象增加一些职责(即增加其额外功能)的模式,它属于对象结构型模式。

    装饰器模式[Decorator]

    NULL 博文链接:https://xiangtui.iteye.com/blog/1033790

    python使用装饰器(Decorator)的方式实现单例模式

    demo python使用装饰器(Decorator)的方式实现单例模式 functools.wraps 则可以将原函数对象的指定属性复制给包装函数对象, 默认有 __module__、__name__、__doc__,或者通过参数选择

    设计模式_装饰器模式.zip

    装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构。这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装。 这种模式创建了一个装饰类,用来包装原有的类,并在...

    装饰器设计模式

    控制访问,装饰器设计的四个名词,装饰器模式与代理模式的区别,

    C#装饰器模式(Decorator Pattern)实例教程

    主要介绍了C#装饰器模式(Decorator Pattern),以一个完整实例形式讲述了C#装饰器模式的实现过程,有助于深入理解C#程序设计思想,需要的朋友可以参考下

    java设计模式之装饰器模式(Decorator)

    主要为大家详细介绍了java设计模式之装饰器模式Decorator,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

    uu-design-pattern:23种设计模式案例

    |- singleton 单例模式案例 |- structural(结构型模式) |- facade 外观模式案例 |- decorator 装饰器模式案例 |- adapter 适配器模式案例 |- flyweight 享元模式案例 |- composite 组合模式案例

    java实现装饰器模式(Decorator Pattern)

    主要为大家详细介绍了java实现装饰器模式Decorator Pattern,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

    python装饰器decorator介绍

    一、装饰器decorator decorator设计模式允许动态地对现有的对象或函数包装以至于修改现有的职责和行为,简单地讲用来动态地扩展现有的功能。其实也就是其他语言中的AOP的概念,将对象或函数的真正功能也其他辅助的...

    react-global-event-decorator:滥用装饰器模式

    滥用装饰器模式 安装 如果您有风险,请继续使用此功能。 你是大人 npm install --save react-global-event-decorator 这个是来做什么的? 当您单击DOM中的任意位置时,曾经有一个React组件需要执行操作吗? 它...

    PHP设计模式之装饰器模式定义与用法详解

    什么是装饰器模式 作为一种结构型模式, 装饰器(Decorator)模式就是对一个已有结构增加”装饰”. 适配器模式, 是为现在有结构增加的是一个适配器类,.将一个类的接口,转换成客户期望的另外一个接口.适配器让原本接口...

    PHP设计模式(八)装饰器模式Decorator实例详解【结构型】

    主要介绍了PHP设计模式:装饰器模式Decorator,结合实例形式分析了PHP装饰器模式Decorator相关概念、功能、原理、用法及操作注意事项,需要的朋友可以参考下

    12步入门Python中的decorator装饰器使用方法

    装饰器(decorator)是一种高级Python语法。装饰器可以对一个函数、方法或者类进行加工。在Python中,我们有多种方法对函数和类进行加工,比如在Python闭包中,我们见到函数对象作为某一个函数的返回结果。相对于其它...

Global site tag (gtag.js) - Google Analytics