1、what?
什么是设计模式?就像我们遵循的规范条理,是前辈总结出来的优于杂乱无章设计的开发经验。与其说设计模式是种解决特定问题的设计方法,倒不如说是一种解决问题的思维。
Design顾名思义,就是设计,提到设计,就不得不提抽象。如何把我们的代码写的更清晰条理明白?我们就需要把相同的东西抽象出来,加以规范改良,使之更易被接受。从无到有是个挺辛苦的过程。万幸,我们的前辈已经提供了方案——设计模式。所以学习设计模式的时候,一定要锻炼自己的抽象能力。把问题的脉络抽象出来,更容易看清本质,知其然更知其所以然。Patterns 则是模版,就某些特定问题抽象出来的经验,制定成模版,可以方便大家反复使用。
(巨人的肩膀)
2、why?
为什么使用设计模式?编写小的程序,用不用设计模式看不出优劣。但一直编小软件是不能满足要求的。大工程考虑的量级不一样,况且大数据又这么流行。所以我们了解并精通设计模式就非常有必要了。
就像我们待人接物的礼仪、写信发公函的范文等等,它们的存在是行业通行规则,熟悉它们更容易别被业内认可。设计模式就是给我们编程时提供范例的。
当然时间久了,本身就能锻炼出解决特定问题的方法,但总不如参考前人的方法来的快,思考的深。
(给你省事用的)
3、how?
如何用?在没用过的时候先不要考虑这个问题了,先试试吧。
学习设计模式不仅要学习针对某种问题的解决方案。自古不谋万世者不足以某一时,不谋全局者不足以谋一域。米老师常提倡极端化考虑问题,就是要有全局观。有的时候这个问题明明是用这种模式偏偏应用另一种模式,为什么?为什么有的模式和原则是相悖的?如果在全局的角度上,就不会有这种疑问了。具体问题具体分析,在部分是高耦的,在全局却是低耦合高内聚的,这就是全局的取舍了。
设计模式一般23个,总的分了三类:创建型、行为型、结构型。无论是哪一类,都是面向对象的。因此设计模式的思考上,大概就是可维护性(删删改改)、可复用性(能不能不重复的情况下多次使用)、可扩展性(是怎么添加的)和灵活性(改变是不是可行)。万变不离其宗的就是设计模式的六大原则。看看前人是如何把辣么多要求的代码抽象规范出来形成模版,就是学习设计模式的乐趣之所在了。
(保证自己的劳动成果别挨骂)