设计模式学习心得(持续更新)
本博文仅仅是笔者自己的学习路线,归纳整理了一些好的设计模式资料。
1、策略模式
参考资料: c#设计模式(20)——策略者模式(stragety pattern)
策略模式主要是将产品共有的部分抽象出来,不同的行为据此抽象作不同的具体实现,最后再有一个context解耦客户端调用与服务端的实现,客户端是明确知道有哪些行为的。
注意: 如果优化的话,可以使用抽象类,将变化的算法设为抽象方法,或虚方法,这样让子类对该方法进行实现即可,同样可以实现该需求,而且代码重用性应该会更好
2、工厂模式
参考资料:c#设计模式(3)——工厂方法模式 c#设计模式(1)——简单工厂模式 c#设计模式(2)——工厂模式
工厂模式主要是用来创建产品(即对象),在指定的工厂中构建指定的产品。整个的构建过程都是解耦的。
由简单工厂模式到工厂模式的演进,是设计模式的原则之一:开放封闭原则 推进的。这一点在我们日常开发中有很明显的体现,我个人也是"后知后觉"。代码的开发应该对扩展开放,对修改封闭。
对比了下策略模式与工厂模式的实现,我发现其实可以很简单实现两者的相互转换:抽象和具体都是变动,策略模式中的context层替换为工厂模式中的工厂层,就ok了。但是两者的含义不一样。从代码来分析,策略模式是在客户端已经明确了产品,工厂模式则是将产品委托给了工厂来创建。可参考 。
3、建造者模式
参考资料:c#设计模式-建造者模式 c#设计模式之四建造者模式(builder pattern)【创建型】
建造者模式主要用于“分步骤来构建一个复杂的对象”,针对的产品/对象的构建过程。
微软fcl中的stringbuilder类的实现就是变种的builder模式,其实现值得借鉴。
建造者模式的实现与工厂模式的实现其实比较相似。在工厂方法模式里,我们关注的是一个产品整体,无须关心产品的各部分是如何创建出来的;但在建造者模式中,一个具体产品的产生是依赖各个部件的产生以及装配顺序,它关注的是“由零件一步一步地组装出产品对象”。简单地说,工厂模式是一个对象创建的粗线条应用,建造者模式则是通过细线条勾勒出一个复杂对象,关注的是产品组成部分的创建过程。可参考 工厂方法模式vs建造者模式
推荐阅读
-
js装饰设计模式学习心得
-
JavaScript设计模式精华摘抄(持续更新...)-考拉阅读前端团队-SegmentFault思否
-
设计模式系列 - 目录(持续更新中。。。)
-
设计模式学习心得(持续更新)
-
Oracle的学习心得和知识总结(三)|Oracle数据库重要函数详解 单行函数(一)(建议收藏 持续更新...)
-
JavaScript设计模式精华摘抄(持续更新...)-考拉阅读前端团队-SegmentFault思否
-
js装饰设计模式学习心得
-
CSS知识总结之设计模式(持续学习中)_html/css_WEB-ITnose
-
设计模式系列 - 目录(持续更新中。。。)
-
CSS知识总结之设计模式(持续学习中)_html/css_WEB-ITnose