装饰器模式体现了一种“组合优于继承”的思想。当我们要动态为对象增加新功能时,装饰器模式往往是我们的好帮手。很多后期出现的 Ioc 容器都为装饰器模式提供了支持,比如说 Autofac。在 My.Ioc 中,默认不提供装饰器支持,但我们可以自己进行扩展,以提供此项功能。using System;usi...
分类:
其他好文 时间:
2014-09-11 18:46:32
阅读次数:
261
当有这样的业务需求的时候——要为写好的代码在目标代码之前或者之后添加部分操作时,此时最笨的方法就是直接在目标代码的前后加上我们需要的功能代码,但是这样违背了java封装的特性。更好一点的方法就是使用设计模式——代理模式,然而,装饰器模式也有同类的功能,那么着两种设计模式到底有什么区别呢?下面就分别来...
分类:
其他好文 时间:
2014-09-09 22:57:39
阅读次数:
441
假设有一个公司要做产品套餐,即把不同的产品组合在一起,不同的组合对应不同的价格。最终呈现出来的效果是:把产品组合的所有元素呈现出来,并显示该组合的价格。 每个产品都有名称和价格,首先设计一个关于产品的抽象基类。 public abstract class ProductBase { public a...
分类:
其他好文 时间:
2014-09-08 09:37:36
阅读次数:
359
一、设计模式的分类总体来说设计模式分为三大类:创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式...
分类:
其他好文 时间:
2014-09-02 17:34:55
阅读次数:
285
前言点击查看:设计模式系列装饰器模式(Decorator)定义:不通过派生类增改类属性动作,而是通过模式设计动态的达到这种效果,而且比继承更方便灵活减少程序的复杂性。举例:汪峰打造冠军团队。首先团队类为空,经过汪峰不断的努力,为团队争取学员,也为团队队员打造合适的平台,让其发挥。团队不断的变强,变完...
分类:
其他好文 时间:
2014-08-28 19:41:05
阅读次数:
208
概念:在装饰模式中的角色有: ● 抽象构件(Component)角色:给出一个抽象接口,以规范准备接收附加责任的对象。 ● 具体构件(ConcreteComponent)角色:定义一个将要接收附加责任的类。 ● 装饰(Decorator)角色:持有一个构件(Component)对象的实例...
分类:
其他好文 时间:
2014-08-21 18:34:44
阅读次数:
217
一、设计模式的分类总体来说设计模式分为三大类:创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式...
分类:
其他好文 时间:
2014-08-20 08:09:46
阅读次数:
331
通过ServiceTracker可以对查找的Service进行扩展
下面的demo引入装饰器模式对Service进行日志的扩展
demo:
Provider
student-manage/Activator.java
package com.demo.service;
import java.util.Dictionary;
import java.util.Has...
分类:
其他好文 时间:
2014-08-20 00:05:55
阅读次数:
211
装饰器模式可以在不影响其他对象的情况下,以动态、透明的方式给单个对象添加职责,也能够处理那些可以撤销的职责。经常用于日志记录、性能测试等场合。想象一下这个很常见的场景,你写了一个方法只提供给以登陆的用户访问(事实上我也是通过django的@login_required才了解到@修饰符的),你可以写以...
分类:
编程语言 时间:
2014-08-16 13:45:20
阅读次数:
269
装饰器模式,也叫又叫装饰者模式,顾名思义,将一个对象进行包裹,包装,让它变成一个比较满意的对象,这种模式在我们平时项目开发中,经常会用到,事实上,它是处理问题的一种技巧,也很好的扩展了程序,让程序代码不那么死板!何时能用到它?1. 需要扩展一个类的功能,或给一个类添加附加职责。2. 需要动态的给一个...
分类:
其他好文 时间:
2014-08-05 11:01:19
阅读次数:
190