模式的起点

¡ 工厂方法(Factory Method Pattern

模式起点:将程序中创建对象的操作单独进行处理,大大提高了系统扩展的柔性,接口的抽象化处理给相互依赖的对象创建提供了最好的抽象模式。

典型应用:工厂方法模式是最简单也最容易理解的模式之一。其关注的核心是对于对象创建这件事儿的分离。

¡ 单例(Singleton Pattern

模式起点:一个类只有一个实例,且提供一个访问全局点的方式,更加灵活地保证了实例的创建和访问约束,并且唯一约束的实施由类本身实现。

典型应用:一个类只有一个实例,经常被应用于Façade模式,称为单例外观。

¡ 命令(Command Pattern

模式起点:将请求封装为对象,从而将命令的执行和责任分开。通常在队列中等待命令,这和现实多么相似呀。如果你喜欢发号施令,请考虑你的ICommand吧。

典型应用:菜单系统。

¡ 策略(Strategy Pattern

模式起点:策略模式,将易于变化的部分封装为接口,通常Strategy封装一些运算法则,使之能互换。

典型应用:数据层常考虑以策略提供算法和数据的分离。

¡ 迭代器(Iterator Pattern

模式起点:相信任何的系统中,都会用到数组、集合、链表、队列这样的类型吧,那么你就不得不关心迭代模式的来龙去脉。在遍历算法中,迭代模式提供了遍历的顺序访问容器,GOF给出的定义为:提供一种方法访问一个容器(Container)对象中各个元素,而又无须暴露该对象的内部细节。

典型应用:.NET中就是应用了迭代器来创建用于foreach的集合。

¡ 模板方法(Template Method Pattern

模式起点:顾名思义,模板方法就是在父类中定义模板,然后由子类实现。具体的实现一般由父类定义算法的骨架,然后将算法的某些步骤委托给子类。

典型应用:ASP .NETPage类。

¡ 观察者(Observer Pattern

模式起点:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。观察者和被观察者的分开,为模块划分提供了清晰的界限。

典型应用:在.NET中使用委托和事件可以更好地实现观察者模式,事件的注册和撤销不就对应着观察者对其对象的观察吗?

¡ 职责链(Chain of Responsibility Pattern

模式起点:将操作组成一个链表,通过遍历操作链表找到合适的处理器。通过统一的接口,被多个处理器实现,每个处理器都有后继处理器,可以将请求沿着处理器链传递。

典型应用:GUI系统的事件传播。

¡ 桥接(Bridge Pattern

模式起点:把实现和逻辑分开,对于我们深刻理解面向对象聚合复用的思想甚有助益。

典型应用:多版本.NET Framework通过环境变量与对应版本应用建立桥梁。

¡ 代理(Proxy Pattern

模式起点:将复杂的逻辑封装起来,通过代理对象控制实际对象的创建和访问,由代理对象屏蔽原有逻辑的复杂性,同时控制其可访问性。

典型应用:WCF服务代理。

¡ 装饰器(Decorator Pattern

模式起点:为原有系统,动态地增加或者删除状态和行为,在继承被装饰类的同时包含被装饰类的实例成员。

典型应用:.NETStream的设计。

¡ 门面(Façade Pattern

模式起点:将表现层和逻辑层隔离,封装底层的复杂处理,为用户提供简单的接口,这样的例子随处可见。门面模式很多时候更是一种系统架构的设计,在很多项目中,都实现了门面模式的接口,为复杂系统的解耦提供了最好的解决方案。

典型应用:WSDL就是一个典型的平台无关的门面应用。

¡ 组合(Composite Pattern

模式起点:不管是个体还是组件,都包含公共的操作接口,通过同样的方式来处理一个组合中的所有对象。组件的典型操作包括:增加、删除、查找、分组和获取子元素等。

典型应用:树形结构的数据组织。

¡ 适配器(Adapter Pattern

模式起点:在原类型不做任何改变的情况下,扩展了新的接口,灵活且多样地适配一切旧俗。这种打破旧框框、适配新格局的思想,是面向对象的精髓。以继承方式实现类的Adapter模式和以聚合方式实现对象的Adapter模式,各有千秋,各取所长。看来,把它叫做包装器一点也不为过。

典型应用:RCWRuntime Callable Wrapper)在COM Interop中的应用。

模式本身还有很多的故事和细节,在《设计模式:可复用面向对象软件的基础》中总结了23种设计模式,其大致的分类如表3-2所示。

3-2 经典设计模式

   

   

创建型模式

工厂方法

 

抽象工厂

 

单例

 

创建者

 

原型模式

结构型模式

桥接

 

适配器

 

组合

 

外观

 

装饰

 

享元

 

代理

行为型模式

模板方法

 

迭代器

 

中介者

 

职责链

 

解释器

 

命令

 

观察者

 

备忘录

 

状态模式

 

策略模式

 

访问者

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值