最近看了《HEAD FIRST设计模式》,文中问答、实例较于看干涩的定义对理解设计模式有更好的版主。此类目文章,略做一些相关笔记和感想,也望大佬指教。废话不多,就此开始。
一、设计模式相关概念
1、初步定义:实在某情景下,针对某问题的某解决方案。
如果发现自己处于某个情景下,面对着所达到的目标,被一群约束影响着问题,然而,能够应用某个设计克服这些约束并达到该目标。
2、 对于这个定义的思考:
1)、定义分成三个部分:问题、情境、解决方案。是不是满足这三个部分就是设计模式呢?
这个定义很多程度上是我们第一次想到的设计模式,可是,有没有想过,很多情景下,满足了这三个部分,并不能称为设计模式。
拿书中例子来说:
问题:“如何准时上班?”
情境:“将钥匙留在车里了。”
解决方案:“打破车窗,进入车中,开车上班”
这个例子并不能说是一个设计模式,首先不会三番两次的忘记钥匙在车中,另外,一而再的把车窗打破,也不是一个可复用的解决方案。
一个完整的设计模式的类目有几分部分组成:名称、类目、意图、动机、应用性、适用性、结构、参与者、协作、结果(好坏结果)、代码示例、已知应用、相关模式。
2)、是否一定要严格遵照某个模式的定义
模式不是法律或准则,模式只是指导方针,你可以根据自己的需求,改变模式,来符合自己的需要,当然在改变模式的时候,最好在文档中注明它与经典设计模式的异同点,这样,项目交接时候,其他开发人员可以很快理解你的代码了。
二、设计模式分类
创建型:Singleton、Abstract Factory、Factory Method、Builder、Prototype
行为型:Template Method、Iterator、Command、Observer、State、Strategy、Visitor、Mediator、Memento、Interpreter、Chain of Responsibility
结构型:Proxy、Decorator、Composite、Facade、Adapter、Flyweight、Bridge
三、设计模式应用
书中极力推崇不要生搬硬套设计模式,在实际项目中,代码尽量保持简单,书中调侃一些设计模式初学者会为一个hello world级别的程序找设计模式,中级开发人员,会想把设计模式更多的应用在程序中,这些都不是正确的应用。
谨记下面三句话:
1、为实际应用的扩展而使用模式,不要只为了假想而使用模式。
2、简单才是王道。如果不用设计模式就能设计出简单高复用的方案,just do it。
3、模式是工具而不是规则,需要被适当地调用以符合自己的需求。
网友评论