设计模式=要解决问题+思想+打法
设计模式=要解决问题+思想+打法
我们很多情况下,在以OO思想思考问题时候不得不考虑:
1、要解决问题:
怎么实现架构的高内聚低耦合
考虑权重:代码复用+可扩展+可维护性
结合现实情况,对需求进行评估,对代码架构进行分析。
2、思想
思想 = 原则:
比如开闭,职责单一,依赖倒转,里氏替换,迪米特。
对变化的理解:
变化始终存在,无论模块多么封闭,都不可能完全封闭。设计人员必须对于他设计的模块应该对哪种变化封闭做出选择,必须先猜出最有可能发生变化的种类,然后构造抽离这些变化。
面对需求,对程序的改动是通过增加新的代码进行的,而不是更改现有的代码。
最初编写代码时候,假设变化不会发生,当变化发生时,我们就该抽象来隔离以后发生同样的变化。(重构)
拒绝不成熟抽象和抽象本身一样重要。
高手是用同样代价获得最大收益或者最小代价获得同样收益
3、打法
很多时候,思想对了,往往方针落不了地或者有问题,关键还是经验不足。
这也是最核心一步内容,没有coding经验的,代码驾驭能力很弱。
我们在学习到第三步,打法时候,真正才能体验效果。前面2点,都是理论,说白了都是银枪醋蜡,忽悠。。。
检验了你打法就是实践
我们很多情况下,在以OO思想思考问题时候不得不考虑:
1、要解决问题:
怎么实现架构的高内聚低耦合
考虑权重:代码复用+可扩展+可维护性
结合现实情况,对需求进行评估,对代码架构进行分析。
2、思想
思想 = 原则:
比如开闭,职责单一,依赖倒转,里氏替换,迪米特。
对变化的理解:
变化始终存在,无论模块多么封闭,都不可能完全封闭。设计人员必须对于他设计的模块应该对哪种变化封闭做出选择,必须先猜出最有可能发生变化的种类,然后构造抽离这些变化。
面对需求,对程序的改动是通过增加新的代码进行的,而不是更改现有的代码。
最初编写代码时候,假设变化不会发生,当变化发生时,我们就该抽象来隔离以后发生同样的变化。(重构)
拒绝不成熟抽象和抽象本身一样重要。
高手是用同样代价获得最大收益或者最小代价获得同样收益
3、打法
很多时候,思想对了,往往方针落不了地或者有问题,关键还是经验不足。
这也是最核心一步内容,没有coding经验的,代码驾驭能力很弱。
我们在学习到第三步,打法时候,真正才能体验效果。前面2点,都是理论,说白了都是银枪醋蜡,忽悠。。。
检验了你打法就是实践