一. 什么是设计模式
纠结了好久,今天终于下定决心开始写设计模式系列,因为这个系列章节确实不好写,在这之前,也看了好多关于设计模式的博客、视频、书籍等,大多数用的例子要么猫啊狗啊、大雁等动物类;要么就是学生类,教师类,试想一下,哪个项目中会用这些动物类教师类呢?
我也和我同行的朋友交流了一下关于设计模式,对设计模式的理解,可以分为这么几个层次:
①:根本不知道什么是设计模式。
②:听说过几种设计模式,理解不深。
③:能写出并理解几种设计模式,但不知道在项目中该怎么用。
毋庸置疑,能否灵活的运用好设计模式,是一个名开发工程师迈向架构师的必经之路,上面说的这么玄乎,那么到底什么是设计模式呢?这里先借助金庸的武侠小说来类比一下。
作为金庸迷的我,金庸老师的“飞雪连天射白鹿,笑书神侠倚碧鸳”14部小说每一部看了都不低于3遍以上,对里面个各种武功也是了如指掌,像效果比较炫丽,威力比较大的有:“乔帮主降龙十八掌、段誉的六脉神剑、杨过的黯然销魂掌、任我行的吸星大法等等”,这些都是外家功夫,种类很多,一个人可能会多种,这就好比.Net的中MVC、EF、SignalR等等;当然也有内功心法,典型的有:”少林和尚的易筋经、张无忌的九阳神功”,这两种功夫本身并没有太大的杀伤力,但会了这种功夫,更容易融会贯通外家功夫,使外家功夫发挥出更大效果,拿到我们开发领域,“设计模式”就是内功心法,没有语言之分,它是一种模式,一种思想指导着我们开发。
那么怎么才能算精通设计模式呢?
看过《倚天屠龙记》的朋友可能会记得里面有这么一个场景:赵敏冒充明教挑战张三丰的时候,张无忌办成小道童出来救场,在对阵三个家奴的的时候,张三丰教了张无忌一套太极拳法,里面有这么一段对话:
张三丰演示完后,问张无忌:“无忌,你记住了多少”,张无忌回答说:“无忌不才,只有一小部分没有记住”;过了一会,张三丰又问道:“现在能记住多少”,无忌说:“太师傅,我已经全部忘记了”,这时,张三丰说:“无忌你可以上了”,结果显然而知,对手被打的那叫一个惨啊。
所以:设计模式的最高境界是,忘记设计模式,将23种的设计模式自然而然的融入开发中,哈哈,当然这个有点难,没有个五年以上的功力,很难达到这个层次。
二. 设计模式的内容
设计模式是一种套路,是把 “别人成功的例子” 拿过来灵活运用,我们的优秀的前辈总结出来7个设计原则和23种设计模式。
设计原则:
1. 单一职责原则 2. 里氏替换原则 3. 依赖倒置原则
4. 接口隔离原则 5. 迪米特原则(最小知道原则) 6. 开闭原则
7. 组合聚合原则
设计模式:
1. 创建型模式 :工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。
2. 结构型模式:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。
3. 行为型模式:策略模式、模板方法模式、观察者模式、迭代器模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。
解释:设计模式只是一个大概的套路,不能生搬硬套,有一些做法可能是多个设计模式的融合,有的也很难归为某个设计模式。不要为了设计模式而设计模式,没有十全十美的代码。
在上述设计模式中,大部分设计模式都用到了上面的设计思想,在设计模式中,我们会经常看到:开闭原则、里氏替换原则(多态)、面向接口编程、面向抽象编程、抽象类、override覆写这几种技术。
如果对于抽象类或者override不明白的,有必要先看一下下面的章节:
第一节:从面向对象思想(oo)开发、接口、抽象类以及二者比较
第二节:重写(new)、覆写(overwrite)、和重载(overload)
三. 系列章节
下面将由浅入深,结合实际案例来讲解设计原则和设计模式。
第一节:见识设计模式的神器之处。
第二节:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
第三节:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
第四节:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
第五节:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
第六节:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
第七节:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
第八节:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
第九节:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
第十节:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
第十一节:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
第十二节:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
第十三节:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
第十四节:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
第十五节:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
第十六节:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
第十七节:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
第十八节:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
第十九节:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
第二十节:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
第二十一节:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
第二十二节:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
第二十三节:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
第二十四节:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
第二十五节:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
第二十六节:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
第二十七节:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
第二十八节:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
第二十九节:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
第三十节:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
第三十一节:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
第三十二节:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
第三十三节:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX