读《Head First 设计模式》后的一些奇思妙想
第一次接触这本书,是在刚毕业的时候,由一个对我非常好的14年工作经验的java架构师推荐于我,记忆尤深。他曾这样告诉我:看完这本书且融会贯通,你不一定会变得非常厉害,但你的思维一定足够开阔,代码的复用价值一定更高,最重要的一点,会ZGZ~ 但因为种种原因,一直拖着没有看多少,刚好这次慧读书,又看到了这本书,所以,决定本季度选择它。好了,步入正题!
UML是面向接口编程(即OO)的通用语言。但是因为系统越做越复杂,功能越来越多,业务逻辑也越来越多,导致代码冗余严重,结构臃肿混论,UML图就更不用说了,依赖错乱,大概就像一个人不管春夏秋冬一直在穿着厚重的棉袄一样。设计模式就有助于解决这些经典的问题~
这本书是我见过的所有编程相关的书里面,最有意思且最能够让人产生读下去的想法的一本。
这本书里最让我印象深刻的两句话就是:多用组合,少用继承。开闭原则。对扩展开放,对修改关闭。
对于那么多种设计模式,依然选择两个最让我印象深刻的两个模式拿出来讲一讲,分别是:策略模式和装饰者模式
对于策略模式:它定义了算法簇,分别封装起来,让它们之间可以相互替换,此模式让算法的变化独立于使用算法的客户。封装行为不变的部分,而将可变的行为部分作为抽象以待注入实现,提供算法定制。
有一句非常有意思的话,“有一个”可能比“是一个”更好,就如鸭子都有一个叫飞的行为和叫的行为,可能比是一个会飞和会叫的鸭子要更好一样。
对于装饰者模式:动态地将责任附加到对象上。若要扩展功能,装饰器提供了比继承更有弹性的替代方案。对于这个模式,我想不只是代码中,生活中也有很多,比如给蛋糕上加点芒果,就多了一层芒果的责任让它变成芒果蛋糕。
哦对,说到吃的,我又想提一个外观模式了。让我欲罢不能让我长胖却依然让我还想吃的KFC和金拱门。他们提供的一大波豪华双人餐,一大波单人餐等等,帮我们整理好了一份美观的套餐,让我们更方便的去选择它们,对于强迫症的我来说,非常的友好,同时也提高了他们的销量了。代码也是如此。它提供了统一的接口,用来访问子系统中的一群接口。外观定义了一个高层接口,让子系统更容易使用。
尽管设计模式是那样的好,但也不要“贪杯”哦~请不要滥用设计模式,不能为了用设计模式而去使用它,这样并不能达到效果,反而适得其反。首先,需要确保的一个原则是,保持简单,越简单越好,用尽可能少的代码或是方式解决现有的问题。设计模式只是为了让你的设计变得简单且有弹性,初衷不能错了。
实际上,设计模式并不是什么灵丹妙药,如老张所说,重复三次以上的事情,他一定会想办法抽出来。模式就是解决一再发生的问题的通用方案。
最后,如果你现在并不需要它,请不要那么做!在接受它漂亮的同时,也要承担它所带来的后果。