读Java与设计模式的感想
,其实花的时间主要是修改之前的"复习"。
? 出于对今后再次修改的恐惧,也是为了理清思路,把某些方法和变量封装成几个Class。感觉代码干净多了。
今天读了<Java与设计模式>前几章,感觉讲的非常好,之前也看过一些模式的书和博客,具体模式都讲的很清楚,但是总感觉缺了点什么,少了提纲挈领的东西。
摘录一段(可能不是原话):
?
开闭原则?Open-Closed Principle ?简称 OCP:一个类应该对扩展开放,对修改关闭。开闭原则从另一个角度上讲,其实就是"对可变性的封装原则" Principle of Encapsulation of Variation意味着两点:? 1.一种可变性不应当散落在代码的很多角落里,而应当被封装到一个对象里。同一种可变性的不同表象意味着同一个继承等级结构中的具体子类。继承应当被看作是封装变化的方法,而不应当被看作是从一般对象生成特殊对象的方法。? 2.一种可变性不应当与另一种可变性混在一起。以下的原则其实都是为了实现开闭原则,都附属于开闭原则,是它的工具与手段。里氏替换原则?Liskov Substitution Principle 简称 LSP :任何父类出现的地方都可以被子类代替。依赖倒置原则?Dependence Inversion Principle 简称 DIP:要依赖于抽象不要依赖于实现。解释下为什么叫倒置:底层的接口是由高层提出的,然后由底层实现的,就是说底层的接口所有权在高层,所以叫倒置。接口隔离原则?Interface Segregation Principle 简称 ISP :为客户端提供尽可能小的接口,而不是一个大的总接口,因为里面的东西客户端可能用不到而被迫实现它。组合/聚合复用原则?Composition/Aggregation Principle 简称 CARP:尽可能使用组合,聚合达到复用目的而不是使用继承。分清 “has_a” 和 "is_a" 的关系。迪米特原则?:Law of Demeter?简称LoD,讲的是一个软件实体应当与尽可能少的其他软件实体发生相互作用。?我的理解是,使用设计模式最终目的是为了实现开闭原则,对可变性进行封装。整一堆AbstrctClass和Interface在具体类上面是为了什么?实现复用为了什么?模块的可插拔是为了什么?模块之间解耦为了什么?衍生出的那么多具体设计模式是干什么的?说到底就是为了Open-Closed,节约你的"复习"时间