常用设计模式
来源:互联网 发布:c语言debug是什么意思 编辑:程序博客网 时间:2024/06/04 01:11
单件模式
这是用的最多的模式,每一个正式的软件都要用它,全局配置、唯一资源、还有一个就是所有的工厂我都设计为单件模式,因此它的使用量大于工厂模式和抽象工厂模式之和。
工厂模式和抽象工厂模式
为了在程序代码中避免出现大量的New,因此我编写的软件代码这两三年基本都使用了工厂,由于深受受王咏武大侠关于舍熊掌取小鱼的影响,因此我较多地选用工厂模式,感觉确实有扩展需要的情况下才使用抽象工厂模式,其实工厂模式就是一个抽象工厂的特例,扩展为抽象工厂也非常容易。
适配器模式
适配器模式有两种类的适配器和对象适配器,对象适配器更多一些,对象适配器的优点在很多大侠的著作了已经论述n次了,我这里不多啰嗦,我用的较多的原因还有一个,我从C++转到C#,由于C#不支持多重继承,我又不比较懒,较少定义interface,因此大多数情况下用C#时也只能使用对象适配器模式了。其实适配器和装饰模式功能上有很大的相似性,在下面的装饰模式中加以论述。
装饰模式
也叫油漆工模式,装饰模式和适配器模式相似都是用来利用现成代码加以调整来满足新的需求,其实采用设计模式的目的之一就是复用,这两个模式正是复用的体现。当你要用这两种模式的时候都是为你现有软件新增新的功能,一般情况下,如果你是让你的软件新增新的功能操作,你一般要用装饰模式,你如果要为软件新增功能支持,你最好选择适配器模式,你如果想为你的类新增操作你用装饰模式,你如果要引入其他来源的现成代码,你用适配器模式。
观察者模式
这个模式我用的多一个原因就是它可以实现事件功能,当然在C#中可以直接使用事件,但是在C++中却是用可以用此模式发挥的淋漓尽致了,网上曾经的一个考题(猫大叫一声,主人醒来,耗子跑开),就是使用这个模式的最好应用。
外观模式
开发就是能复用的地方就复用,这样才能节省资源,提高效率,外观模式也是一个提供复用其他现成代码的解决方案,你需要实现一个功能,可能现成的代码中就有此功能,但是现成代码可能远远多于你所需要的功能,此时你把这些功能封装起来,再重新提供一个你所需要的接口,这就是这个模式的精髓所在。
这是用的最多的模式,每一个正式的软件都要用它,全局配置、唯一资源、还有一个就是所有的工厂我都设计为单件模式,因此它的使用量大于工厂模式和抽象工厂模式之和。
工厂模式和抽象工厂模式
为了在程序代码中避免出现大量的New,因此我编写的软件代码这两三年基本都使用了工厂,由于深受受王咏武大侠关于舍熊掌取小鱼的影响,因此我较多地选用工厂模式,感觉确实有扩展需要的情况下才使用抽象工厂模式,其实工厂模式就是一个抽象工厂的特例,扩展为抽象工厂也非常容易。
适配器模式
适配器模式有两种类的适配器和对象适配器,对象适配器更多一些,对象适配器的优点在很多大侠的著作了已经论述n次了,我这里不多啰嗦,我用的较多的原因还有一个,我从C++转到C#,由于C#不支持多重继承,我又不比较懒,较少定义interface,因此大多数情况下用C#时也只能使用对象适配器模式了。其实适配器和装饰模式功能上有很大的相似性,在下面的装饰模式中加以论述。
装饰模式
也叫油漆工模式,装饰模式和适配器模式相似都是用来利用现成代码加以调整来满足新的需求,其实采用设计模式的目的之一就是复用,这两个模式正是复用的体现。当你要用这两种模式的时候都是为你现有软件新增新的功能,一般情况下,如果你是让你的软件新增新的功能操作,你一般要用装饰模式,你如果要为软件新增功能支持,你最好选择适配器模式,你如果想为你的类新增操作你用装饰模式,你如果要引入其他来源的现成代码,你用适配器模式。
观察者模式
这个模式我用的多一个原因就是它可以实现事件功能,当然在C#中可以直接使用事件,但是在C++中却是用可以用此模式发挥的淋漓尽致了,网上曾经的一个考题(猫大叫一声,主人醒来,耗子跑开),就是使用这个模式的最好应用。
外观模式
开发就是能复用的地方就复用,这样才能节省资源,提高效率,外观模式也是一个提供复用其他现成代码的解决方案,你需要实现一个功能,可能现成的代码中就有此功能,但是现成代码可能远远多于你所需要的功能,此时你把这些功能封装起来,再重新提供一个你所需要的接口,这就是这个模式的精髓所在。
0 0
- 常用的设计模式
- 一句话常用设计模式
- 常用设计模式
- 常用设计模式
- 常用设计模式收集
- 常用设计模式收集
- java常用设计模式
- java常用设计模式
- 常用设计模式
- 常用设计模式收集
- Java常用设计模式
- java常用设计模式
- 常用设计模式
- 常用设计模式二
- 常用设计模式3
- 常用设计模式
- java常用设计模式
- java常用设计模式 .
- Swift 系统学习 20 结构体 添加可失败的构造方法
- $.each(json,function(index,item){ }); 中的2个参数的意思
- 考勤项目查询sql,用于温习,觉得可以的时候要删掉
- 牛腩(7)-关于 CSS 的部分内容
- std::thread详解
- 常用设计模式
- maven+spring测试出现 java.lang.IllegalStateException: Failed to load ApplicationContext异常
- 常用工具方法整理
- Struts2 用 s:if test 判断字符串相等的方法
- javascript时间和日期,实现时钟功能
- PHP异步处理方法
- 如何定位死循环或高CPU使用率(linux)
- 解决CSDN博客中代码块开头出现标签代码问题
- LSTM的Encoder-Decoder模式