(C#设计模式学习笔记)一、面向对象的根本性问题及松耦合与紧耦合

1.封装、继承、多态

  • 封装,隐藏内部实现
  • 继承,复用现有代码
  • 多态,改写对象行为
    继承是以封装为基础的,多态是以继承为基础的。
    封装,侧重于对象的描述。
    继承和多态,侧重于对象之间的关系描述。

2.从编程语言直观了解面向对象

通过面向对象编程语言(OOPL)认识到的面向对象,并不是面向对象的全部。OOPL的三大机制“封装、继承、多态”可以表达面向对象的所有概念,但是这三大机制没有刻画出面向对象的核心精神。

3.面向对象的根本性问题

  • 我们为什么要使用面向对象?
  • 我们应该怎样使用三大机制来实现好的面向对象?
  • 我们应该遵循什么样的面向对象原则?

4.重新认识面向对象

  • 隔离变化
    宏观层面能将变化所带来的的影响减为最小
  • 各司其职
    微观层面面向对象的方式更强调各个类的“责任”,新增员工类型不会影响原来员工类型的实现代码
    耦合关系直接决定着软件面对变化时的行为
    模块与模块之间的紧耦合使得软件面对变化时,相关的模块都要随之更改。
    模块与模块之间的松耦合使得软件面对变化时,一些模块更容易被替换或者更改,但其他模块保持不变。

5.怎样使用三大机制来实现“好的面向对象”

  • 针对接口编程,而不是针对实现编程
  • 优先使用对象组合,而不是类继承
    类继承在某种程度上破坏了封装性,子类父类耦合度高;对象组合只要求被组合的对象具有良好定义的接口,耦合度低;
  • 封装变化
    设计模式是“封装变化”方法的最佳阐释,封装变化,最重要的一点就是发现变化,或者说是寻找变化。

你可能感兴趣的:(设计模式)