Head First summary

  学习面向对象好几年了,但一直没有深刻的理解面向对象,直到最近开始做自动化测试平台开发过程中,才发现面向对象的魅力。因而决定好好把设计模式学习下。首先先了解下设计模式相关的定义以及主意事项:

1.  什么是设计模式:

   描述了软件设计过程中某一类常见问题的一般性的解决方案。

2.  面向对象设计模式:

     描述了面向对象设计过程中、特定场景下、类与相互通信的对象之间常见的组织关系。

 

经典设计模式种类总共有23种(有点多),但是他们的设计都貌似都是围绕着面向对象三大机制展开的(急待求证),即: 封装、继承、多态。

  – 封装,隐藏内部实现
  – 继承,复用现有代码
  – 多态,改写对象行为

 

从设计原则到设计模式的几点总结:

1.  针对接口编程,而不是针对实现编程
   – 客户无需知道所使用对象的特定类型,只需要知道对象拥有客户所期望的接口。

2.  优先使用对象组合,而不是类继承

       – 类继承通常为“白箱复用”,对象组合通常为“黑箱复用”。继承在某种程度上破坏了封装性,子类父类耦合度高;而对象组合则只要求被组合的对象具有良好定义的接口,耦合度低。

3.  封装变化点
     – 使用封装来创建对象之间的分界层,让设计者可以在分界层的一侧进行修改,而不会对另一侧产生不良的影响,从而实现层次间的松耦合。

 

设计模式几点更具体的设计原则:

1.   单一职责原则(SRP):
  – 一个类应该仅有一个引起它变化的原因。

   [理解]:尽量一个类实现一种行为习惯,比如说不要让一个类既干这个又干那个。


2.  开放封闭原则(OCP):
  – 类模块应该是可扩展的,但是不可修改(对扩展开放,对更改封闭)

   [理解]:尽量扩展类方法,而不要去修改一个类方法,比如说修改类方法类型,因为一旦修改,导致引用地方都必须修改。扩展新方法可以满足新需求。


3.  Liskov 替换原则(LSP):
  – 子类必须能够替换它们的基类
4.  依赖倒置原则(DIP):
  – 高层模块不应该依赖于低层模块,二者都应该依赖于抽象。
  – 抽象不应该依赖于实现细节,实现细节应该依赖于抽象。

   [理解]:高层尽量都已乃抽象,与细节无关,这样修改拓展新方法时不会影响到高层功能。


5.  接口隔离原则(ISP):
  – 不应该强迫客户程序依赖于它们不用的方法。

刚开始看设计模式,以上一些原则和总结理解不是很深刻,希望能在以后具体设计模式方法中能够得到加强,有助于对面向对象的深入理解和设计开发有一定帮助,为能开发出好用易扩展的测试框架和工具打一点基础。

posted @ 2013-09-16 17:23  Blackeye  阅读(155)  评论(0编辑  收藏  举报