《大话设计模式》读后感

一、内容简单概括

1.1、面向对象 设计模式的目的

1) 可维护

2) 可扩展

3) 可复用

4) 灵活性好

书中举例:

个人体会:在面向对象之前有面向过程编程,新事物的出现肯定是为了解决旧事物不能解决的问题的,这里说的问题就是:需求是一定会变化的。为了更好地适应这种变化,在变化发生时软件系统在合理程度上去修改以满足要求,也就是以上四个目标

1.2、设计模式六大原则

1) 开闭原则:对新增开放,对修改关闭

2) 单一职责原则:一个类应该尽量简单(自行体会、把控)

3) 聚合复用原则:应该优先使用聚合/复用而非实现、继承

4) 里氏替换原则:父类出现的地方,其子类一定可以出现(替换)

5) 依赖转置原则:面向接口/抽象编程

6) 迪米特原则:类之间减少关联,如果一定要,则通过第三方来实现

个人体会:这六大原则还是比较好理解的,举例来说,开闭原则,如果对旧有事物进行修改、变更,那么与这个旧有事物相关的都有可能受到影响,甚至是一些意料之外的影响,如果这些都要照顾到成本会很高,而用新增来解决就不会有以上问题,只对现在负责即可;再比如依赖转置原则,就拿生活中的例子,电脑由几部分组成,就拿内存条来说,有这么多不同的厂家生产的产品,价格、性能、质量各不相同,但我就自己就可以按需选择、替换,而不需要在意各自细节的不同,这就是标准(接口/抽象)的力量。这六大原则都是为可修改、可扩展、可复用、灵活性好服务的,只是侧重点不同。

1.3、GOF的23种设计模式

这是23中设计模式的归类和一句话概括,像我自己看完书后,再看这个提纲,看每一种设计模式的一句话概率我就会联想到书中的举例和代码结构。当然这里面有些设计模式的代码结构是非常相似的,比如状态模式和策略模式、比如建造者模式和模板模式,我目前的感受是用具体的场景和侧重点去对进行区分,比较能更清晰地区别它们,关于这部分,书中有个“OOTV设计模式大赛”就是用拟人的手法对这23中设计模式的比较、区分以及他们的适用场景的说明,可以多读几遍,多加体会。

二、个人感受

算起来自己从事java软件开发也满5年了,从刚入行就听过设计模式的大名,期间也通过项目组件、博客文章、菜鸟教程等看过几遍,但感觉总是很模糊、生涩,不能很好地去掌握和理解,而且这种软实力大家都在说,但是就算一点不会对平时工作好像也没什么影响(应该是自己没做过大项目......),现在花时间去系统地对设计模式做一个学习总结,确实有一点长进的,学习之后再去看组件中用到的设计模式就更加理解、认可为什么它要这么设计,自己开发代码也会更好地以面向对象编程的思想去完成工作(反射YYDS),更好地适应需求的变化这一事实,不会再有都是面条式的代码,难以维护不说,别人看到也会看不起。

经验分享 程序员 微信小程序 职场和发展