设计模式笔记

引用了http://www.cnblogs.com/floodpeak/archive/2008/02/19/1073007.html

设计模式是一种真理,我们在没有学习过设计模式时都会或多或少的与他不谋而合,但是学习过后我们可以把他从经验性的东西提炼为理论性的,并且反过来再指导实践,这应该就是我们学习并使用设计模式的初衷,这好比是政经中的价值规律,任何人都知道东西如果少了而需求大,它价格马上就涨,而反过来价格就贱,可是学过政经后就可以站到理论高度了,把握起来更加从容

观察者模式

 

设计模式中,用到过的可能不下十五种,具体的也没有统计过,但令我印象最为深刻的,也是给我最大受益的还属观察者模式

我做的是广电系统的线缆设计模块,使用的是超图提供的GIS控件,使用过它的同行肯定知道,这个控件提供了大量的消息,包括最基本的鼠标键盘消息,还有一些特殊的消息,比如添加了空间对象,开始的时候用这些消息还是很方便的,毕竟人家也是千锤百炼的,稳定性肯定有保障,可是开发了一个月后,功能做了一部分,突然发现再加入新的功能已经举步维艰,因为代码量太大,而使用这样的一个消息系统,各个关联不大的功能之间也耦合紧密,看了半天觉得回到了过程时代,在手足无措之时想到了故交观察者。

用观察者模式来处理这样的问题实在是游刃有余,首先让Subject盯着控件发出的各种消息,然后将消息分析后分发给各个Observer,而这时的各个功能逻辑可以散布到各个观察者中,耦合度急剧下降,而且各个观察者的注册与反注册可以根据需要随时进行,灵活性急剧增强,从而使整个系统可扩展性良好、可维护性提高、可重用性增强,为后续的开发工作提供了有力的保障

观察者模式有点类似文档视图结构中的UpdateAllViews。

 

模板模式

一般学设计模式的人都有过这样的经历:这模板模式怎么我还没学就用过了,哈哈
泛型是一种模板模式?

工厂模式

 

工厂模式、工厂方法模式和抽象工厂模式

http://tianli.blog.51cto.com/190322/32545

可实现:可根据配置来连接数据库,如SQL Server、Oracle等即可。而不是New SQLConnect/OracleConnect。

工厂模式有点类似C#的反射、UNO中的服务管理器:New("类名")

 

可以这么去理解,“抽象工厂模式”这个称呼中的“抽象”是一个动词,即对工厂方法模式进行了抽象,就变成了抽象工厂模式,这么理解后,就不难看出它们的区别:
工厂方法模式:每个抽象产品派生多个具体产品类,每个抽象工厂类派生多个具体工厂类,每个具体工厂类负责一个具体产品的实例创建;
抽象工厂模式:每个抽象产品派生多个具体产品类,每个抽象工厂派生多个具体工厂类,每个具体工厂负责多个(一系列)具体产品的实例创建。

 

在开发一个类的过程中,我们一般都要为这个类开发相应的构造函数(不过大部分情况下,.NET开发环境会自动默认创建构造函数),这样,使用这个类的客户可以利用构造函数对这个类进行实例化.但是,有时候会出现这种情况:需要使用一个对象的客户并不知道(或者不应该知道)应该对几个类中的哪个类进行初始化.面对这个问题,我们可以利用工厂模式定义一个接口,客户可以使用这个接口创建一个对象.同时我们还可以控制对哪个类进行实例化,实例化过程使用了一个方法,这个方法需要利用外部因素来确定对哪个类进行实例化.有时候,这些外部因素就是一个庞大的研究主题,并且往往会涉及到多个类.为此,抽象工厂模式就应用于这种场合,其目的是为了提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类,至少无需指定它们具体的类符合我们的要求。

 

桥接模式

毛笔与画笔的区别

 

访问者模式

访问者模式

 

策略模式

策略模式

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值