随笔分类 - 设计模式
摘要:开放封闭原则 基本描述 一个设计良好的应用程序应该做到对扩展开放,对修改封闭。换言之:当系统需要添加一个新的模块时,尽可能少地修改已有的代码(对修改封闭),通过添加新的类型(class)以增加新的功能(对扩展开放)。 举例说明 假设要开发一个二目运算类Calculater,其不考虑扩展性的设计如下:
阅读全文
摘要:当多个类之间需要建立联系时,为了避免多个类之间的耦合,通过一个“中介者”类专门负责多个类之间的信息交换。现有婚姻介绍所为例:韩梅梅和李雷(有车有房,年龄稍大)都在婚介所注册了会员,韩梅梅在听了婚介所工作人员对李雷的介绍后决定约李雷见面,于是婚介所工作人员将话带到了李雷那里。代码如下:中介抽象类:[代码]继承了中介抽象类具体的婚介所类:代码Code highlighting ...
阅读全文
摘要:有时,客户端需要面对来自不同类的、不同方法的组合调用,这会使得客户端与这些类产生较为严重的耦合。外观模式可以解决这一问题,他封装了一组方法,且仅提供一个与客户之间交互的切入点。这是不使用外观模式的类图:而使用了外观模式则:在这里,遵循了一个设计模式的原则:最少知识原则-------“只和你的密友谈话”。(HeadFirst)
阅读全文
摘要:存在一种情况如下:客户端需要调用一个已经存在的A类的行为,但该类与目前使用的相关(B、C)类实现了不同的接口,为了保持统一,客户希望可以使用统一的接口。适配器模式引入了Adaper类,该类实现了与B、C类相同的接口,且封装了A类的行为,客户端可以等同的看到B、C和Adaper类。实例:设有三个人:外国人Tom(实现接口IPerson);中国人张三(实现接口IPerson):外星人Extraterr...
阅读全文
摘要:为了支持命令的撤销、重做等功能,命令的使用者和执行者应该具有较低的耦合。命令模式通过将“命令”抽象化而实现了使用者和实现者之间的松耦合。ICommand:[代码]CommandOne:[代码]CommandTwo:[代码]Invoker:[代码]Clinet:[代码]结果:
阅读全文
摘要:在软件系统中,可能会出现以下情况,一个产品其构建过程是稳定的,但其组成部件是不稳定的,容易发生变化。建造者者模式可以用来解决这个问题。 创建者模式 例如:组装一台娱乐用的高配置电脑和组装一台办公用的普通配置电脑,其组装过程是一样的,发生变化的是组成电脑的部件,它们来自不同的厂商、可能具有不同的性能,当然,还有不同的价格(这个也算作组成电脑部件的一个属性吧)。使用创建者模式,可以在其算法相对稳定的...
阅读全文
摘要:单例模式:保证一个类仅有一个实例,并提供一个访问它的全局访问点。为了不至于很快忘记,这里写三个最常用的方法如下:[代码]运行一下:只有三个"ok"
阅读全文
摘要:/* * author:zzy * time:2008-12-7 * describe: this is one simple example of proxy pattern; * when you can not invoke a subject directly (eg:remote WebService methed) or you can consider to use this pat...
阅读全文
摘要:内容图解:代码:用工厂方法模式产生魔兽不同种族[代码]运行结果:
阅读全文

浙公网安备 33010602011771号