《Head First 设计模式》读书笔记(13)—— 与设计模式相处

真实世界中的模式千变万化。

定义设计模式

模式就是某情境下,针对某问题的某种解决方法。
情景就是应用某个模式的情况,
问题就是在约束下要达到的目标,
解决方案就是一个通用的设计,用来解决约束,达到目标。
注意:设计模式就是解决一个经常重复发生的设计问题。
模式是被发现的,而不是去创建的。

组织设计模式——GoF四人组类目

模式通常根据某种做法被归为几类。最常用的就是根据模式的目标,分为三个不同类目:
创建型、行为型和结构型。

创建型

将对象实例化,共同点就是提供一个方法,将客户从所需要实例化的对象解耦。
singleton单例、Abstract Factory抽象工厂、Factory Method工厂方法
prototype原型、Builder生成器

行为型

类和对象怎么交互以及分配职责
Template Method模版方法、Command命令、Iterator迭代器、Observer观察者、State状态、Strategy策略
Mediator中介者、Visitor访问者、Interpreter解释器、Chain of Responsibility责任链、Memento备忘录

结构型

让你把类或对象组合到更大的结构中。
Composite组合、Decorator装饰者、Facade外观模式、Adapter适配器、Proxy代理
Flyweight蝇量、Bridge桥接

其实某个设计模式可能也会存在在几个类目中,不要可以纠结,要明白目的。

用模式思考

上面很多东西,其实都是理论性的东西。如果不能理解,也不会造成很大的差别,但是理解了对于一个问题你可能会有更高维度的看法。

保持简单(Keep it Simple)

设计是为了解决问题,不是为了要应用设计模式。
设计模式可能只是为了你的程序具有弹性。
不要写个helloworld的时候还去考虑用什么模式。

设计模式不是仙丹

如果你自己都不知道要怎么做,用设计模式也救不了你。你要明白设计模式解决的问题在于器普遍性,而不是某个你正在面对的问题。

何时使用设计模式

如果解决方案很简单,而且不用考虑这个问题的相关约束,同时要了解设计模式带来的后果再决定。
千万不要想什么伪需求,假想太多改变没有意义。
重构代码的时候可以考虑设计模式。
如果很多if语句,是不是状态模式或者工厂模式,要多思考。

成年人不要太爱面子

不要觉得多一个设计模式在里面就很厉害,少一个就显示不出来水平
如果需求没有什么弹性,不需要考虑太多设计模式,就是实现就好了。

初学者helloworld用模式,中级那个问题可以用设计模式解决问题,悟道的人会看到解决方案,只是这个解决方案用到了某个模式。

反模式

反模式告诉你如何利用一个不好的解决方案解决一个问题。说是不好,其实就是我们日常做的那样,这样你才知道什么是好。

发表评论

电子邮件地址不会被公开。