知识点 类应该对扩展开放,对修改封闭。案例 (本故事纯属虚构) 某日早上,流年刚把新开发的游戏项目提交给经理1 public abstract class Role2 {3 public virtual string RoleName { get; privat...
分类:
其他好文 时间:
2015-05-23 00:01:31
阅读次数:
335
java 装饰器模式转自:http://chenhua-1984.iteye.com/blog/565629(后期整理)Java 记得以前听一个高手说java.io包采用了了装饰器模式,当时不是很明白什么事装饰器模式,现在,网上看了一下说明和帮助的例子,他们的例子是这样的。 定义Decorator装...
分类:
其他好文 时间:
2015-05-21 19:18:11
阅读次数:
112
场景时这样的,我有个一大堆任务,我要给这些任务计时,入库。就需要一个带有参数的装饰器来记录任务名称, 在任务执行前和执行之后都需要记录任务当时执行的时刻。
#-*- encoding=utf-8 -*-
from functools import wrapsdef task_logging(taskname):
def func_wrapper(func):
@wraps(...
分类:
编程语言 时间:
2015-05-19 14:48:41
阅读次数:
119
孙悟空有七十二般变化,他的每一种变化都给他带来一种附加本领。而不管孙悟空怎么变化在二郎神眼里,他永远是那只猢狲。
装饰器模式以对客户透明的方式动态的给一个对象附加上更多的责任。
在孙悟空的例子里,老孙变成的鱼儿相当于老孙的子类。
装饰模式的类图如下:
装饰模式的角色介绍:
抽象构件角色(ComponentDec):给出一个抽象接口,以规范准备接收附加责任的对象
具体构件(Concre...
分类:
编程语言 时间:
2015-05-19 10:52:30
阅读次数:
138
装饰者模式:动态地将责任附加到对象上,若要扩展功能,装饰者提供了比继承更有弹性的替代方案。目标是允许类容易扩展,在不修改现有代码的情况下,就可以搭配新的行为。这样的设计具有弹性可以应对改变,可以接受新的功能来对应改变的需求。摩卡奶泡深焙咖啡:一杯深焙咖啡,摩卡装饰它,奶泡装饰它,cost()+del...
分类:
其他好文 时间:
2015-05-17 16:30:08
阅读次数:
206
Decorator常被翻译成"装饰",我觉得翻译成"油漆工"更形象点,油漆工(decorator)是用来刷油漆的,那么被刷油漆的对象我们称decoratee。这两种实体在Decorator模式中是必须的。
Decorator定义:动态给一个对象添加一些额外的职责,就象在墙上刷油漆。使用Decorator模式相比用生成子类方式达到功能的扩充显得更为灵活。
为什么使用Decorator
我们...
分类:
编程语言 时间:
2015-05-17 13:47:07
阅读次数:
127
/*Decorator.h*/
#ifndef DECORATOR
#define DECORATORclass Component
{
public:
virtual ~Component();
virtual void Operation();
protected:
Component();
private:
};class ConcreteComponent:publi...
分类:
其他好文 时间:
2015-05-11 16:10:21
阅读次数:
110
场景
我有好多个好多女神,给她们过生日挑选礼物,是个难题。明天是Marry的生日了,送啥礼物喃。不想太破费,毕竟是千斤顶嘛。选一张我俩的合照,在背面写上“Marry女神,生日快乐”,再去买个相框装饰下吧,在外面再套个礼品盒,一个简单而又有心意的礼品就产生了。
不错,以上我们就是对礼物在进行装饰,同样的,对房屋等同样需要装饰,这时就需要我们的装饰模式。
简介
装饰模式是以对客户端透明的模...
分类:
其他好文 时间:
2015-05-11 16:06:35
阅读次数:
123
装饰模式(decorator ):动态的给一个对象添加一些额外的职责,就增加的功能来说,装饰模式比生成子类更为灵活。
使用情况:当系统需要新功能的时候,是想旧的类中添加新的代码,这些新的代码通常装饰了原有类的核心职责或者主要行为,它们在主类中加入了新的字段,新的方法新的逻辑,从而增加了主类的复杂度。而这些新加入的东西仅仅是为了满足一些只有在特定情况下才会执行的特殊行为的需要。装饰模式可以把每个要...
分类:
编程语言 时间:
2015-05-11 09:10:57
阅读次数:
148
把函数作为参数传入,这样的函数称为高阶函数,函数式编程就是指这种高度抽象的编程范式lambda(lambda x: x*2)(3) 装饰器decorator装饰器是一个很著名的设计模式,经常被用于有切面需求的场景,较为经典的有插入日志、性能测试、事务处理, Web权限校验, Cache等。例如记录日...
分类:
编程语言 时间:
2015-05-10 11:15:00
阅读次数:
181