Design Patterns(一):Principles And Patterns

 

什么是设计模式?

  模式描述了在软件设计过程中某一类常见的问题,以及该问题 一般性 的解决方案。

什么是面向对象设计模式?

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

面向对象设计模式解决的问题?

  面向对象设计模式解决的是“类与相互通信的对象之间的组织关系,包括它们的角色、职责、协作方式几个方面。

何为好的面向对象设计?

  “应对变化,提高复用”

面向对象的三大机制?

  --封装,隐藏内部实现

  --继承,复用现有代码

  --多态,改写对象行为

对象是什么?

  --从概念层面讲,对象是某种拥有责任的抽象。

  --从规格层面讲,对象是一系列可以被其他对象使用的公共接口。

  --从语言层面来看,对象封装了代码和数据。

从设计原则到设计模式?

 --针对接口编程,而不是针对实现编程。

 --优先使用对象组合,而不是类继承。

 --封装变化点

 --使用重构得到模式

几条更具体的设计原则?

   --单一职责原则(Single-Responsibility Principle SRP)
      就一个类而言,应该仅有一个引起它变化的原因。

   --开放封闭原则(The Open-Closed Principle OCP)
      软件实体(类、模块、函数等等)应该是可以扩展的,但是不可修改的。

   --Liskov替换原则(The Liskov Subsititution Principle LSP)
      子类型(subtype)必须能够替换掉他们的基类型(base type)

   --依赖倒置原则(The Dependency Inversion Principle DIP)
      高层模块不应该依赖于底层模块。二者都应该依赖于抽象。
      抽象不应该依赖于细节,细节应该依赖于抽象。

   --接口隔离原则(The Interface Segregation Interface ISP)
      不应该强迫客户依赖于它们不使用的方法。
      一个对象的客户不是必须通过该对象的接口去访问它,也可以通过委托或者该对象的基类去访问它。

 

参考资料:
《C#面向对象设计模式纵横谈系列课程(1)》     李建中老师
敏捷设计原则   临海观潮
设计模式系列随笔:开遍-模式和原则  Justin