摘要:一、桥梁(Bridge)模式桥梁模式是一个非常有用的模式,也是比较复杂的一个模式。熟悉这个模式对于理解面向对象的设计原则,包括"开-闭"原则(OCP)以及组合/聚合复用原则(CARP)都很有帮助。理解好这两个原则,有助于形成正确的设计思想和培养良好的设计风格。我是这样理解的:对一个事物进行抽象,得到了一个行为。比如对Shape进行抽象,得到了Draw的行为。Draw是在哪里实现的?不是在它抽象而来的类Shape,而是在另外一个类实现的。哪个类呢?Drawing类。Draw是从Shape抽象出来的行为,但是不在Shape中予以实现。这就是抽象和实现分离。为什么要这样呢?因为D
阅读全文
随笔分类 - Design Pattern
摘要:原文:http://blog.csdn.net/eric_jo/article/details/6799067依赖倒置原则的2个重要方针A. High level modules should not depend upon low level modules. Both shoulddepend upon abstractions.高层模块不应该依赖于低层模块,二者都应该依赖于抽象B. Abstractions should not depend upon details. Details should depend uponabstractions.抽象不应该依赖于细节,细节应该依赖于抽象
阅读全文
摘要:在软件构建过程中,我们需要为某些对象建立一种“通知依赖关系” ——一个对象(目标对象)的状态发生改变,所有的依赖对象(观察者对象)都将得到通知。如果这样的依赖关系过于紧密,将使软件不能很好地抵御变化。使用面向对象技术,可以将这种依赖关系弱化,并形成一种稳定的依赖关系。从而实现软件体系结构的松耦合。定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。[GOF《设计模式》]实现观察者模式的例子实现观察者模式有很多形式,比较直观的一种是使用一种“注册——通知——撤销注册”的形式。下面的三个图详细的描述了这样一种过程:1:观察者(Observer)将
阅读全文
摘要:GOF给出的定义为:提供一种方法访问一个容器(container)对象中各个元素,而又不需暴露该对象的内部细节。Iterator模式就是分离了集合对象的遍历行为,抽象出一个迭代器类来负责,这样既可以做到不暴露集合的内部结构,又可让外部代码透明的访问集合内部的数据。 迭代器模式由以下角色组成: 1) 迭代器角色(Iterator):迭代器角色负责定义访问和遍历元素的接口。 2) 具体迭代器角色(Concrete Iterator):具体迭代器角色要实现迭代器接口,并要记录遍历中的当前位置。 3) 容器角色(Container):容器角色负责提供创建具体迭代器角色的接口。 4) 具体容器角...
阅读全文
摘要:在设计模式中,Strategy模式就是这样的一个“面向接口编程”的最佳体现,它进行抽象的一部分是针对特定的“算法”,或者说是“策略”。策略模式常用场景:假设现在要设计一个贩卖各类书籍的电子商务网站的购物车(Shopping Cat)系统。一个最简单的情况就是把所有货品的单价乘上数量,但是实际情况肯定比这要复杂。比如,本网站可能对所有的教材类图书实行每本一元的折扣;对连环画类图书提供每本7%的促销折扣,而对非教材类的计算机图书有3%的折扣;对其余的图书没有折扣。由于有这样复杂的折扣算法,使得价格计算问题需要系统地解决。假设我们要开发一个税务系统,那么有关税务的计算就会依照纳税人的不同而分为个人所
阅读全文
摘要:关于这个模式,可以参考设计模式(18)-Command Pattern- 吕震宇
阅读全文
摘要:GoF《设计模式》中说道:为子系统中的一组接口提供一个一致的界面,Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。那这个模式的应用场景会是怎么样的,引用博客上其他人的例子。“举一个生活中的小例子,大凡开过学或者毕过业的都会体会到这样一种郁闷:你要去n个地方办理n个手续(现在大学合并后就更加麻烦,因为可能那n个地方都隔的比较远)。但是实际上我们需要的就是一个最后一道手续的证明而已,对于前面的手续是怎么办的、到什么地方去办理我们都不感兴趣。实际上在软件系统开发中也经常回会遇到这样的情况,可能你实现了一些接口(模块),而这些接口(模块)都分布在几个类中(比如A和B、C、D):
阅读全文
摘要:本文是自己对工厂模式的学习总结。具体可参考:TerryLee的.NET设计模式(3):抽象工厂模式(Abstract Factory)http://www.cnblogs.com/Terrylee/archive/2005/12/13/295965.html和由浅入深学“工厂模式”(1)目前常用的工厂方法包括简单工厂模式(不属于Gof23种设计模式),工厂方法和抽象工厂方法。这三种方法有各自的适用场景,也有缺点。简单工厂模式适用于对简单对象的实例化,它的缺点就是可扩展性差,如果要增加新的逻辑对象,必须修改工厂类,违背了开放,封闭原则。简单工厂模式加上反射可以解决这个问题。工厂方法是对简单工厂的
阅读全文
摘要:单例模式是设计模式中入门级的一种模式, 但是大数人对它的理解还是比较浅溥,网上看到一篇介绍单例模式比较全面的文章 ,地址:http://www.cnblogs.com/TomXu/archive/2011/12/19/2291448.html。列举几种单例的写法,包括泛型单例。版本1: public sealed class Singleton { // 依然是静态自动hold实例 private static volatile Singleton instance = null; // Lock对象,线程安全所用 private ...
阅读全文

浙公网安备 33010602011771号