封装变化

“生生之谓易”。市场环境时刻在变,业务需求也在变。

业务需求变化,要求系统必须做出相应变化;但是系统的变化,又不能影响业务的开展。换句话说,在系统面前,业务的变化都是正常的;在业务面前,系统却必须保持一定的一贯性、稳定性。

这里记录一些从变化和稳定这对矛盾的角度,来理解面向对象编程和设计模式的一些笔记。

面向对象编程么,抽象,封装,继承。

其实抽象所做的,就是最直接的把变化和稳定“一分为二”。在抽象之外,系统“盈虚者如彼,而卒莫消长也”;在抽象之内,则“天地曾不能以一瞬”。这样,抽象内怎么变化,抽象外也感觉不到——这是最理想的情况了。

封装大概可以理解为抽象的一种实现方法:对外提供的是稳定的抽象接口;内部封装的是变化的具体实现。这样,变化就被圈在了一个小范围内。这个范围之外,仍然是稳定的。

继承则可以理解为封装的一种实现方法,或者说特殊情况:稳定的接口,包括一些稳定的实现,由父类实现;变化的部分,交给子类。这样,子类可以千变万化,父类始终稳如泰山。

一些设计原则,比如“开闭”,“单一职责”,也有共通之处;而设计模式么,在这方面走得更远了一些。以后再仔细想吧。

2023-02-15
顺着这个思路走下去,我们可以梳理出面向对象思想的一个脉络来:

  • 抽象
  • 高内聚、低耦合
  • 封装、继承、多态
  • SOLID 五个设计原则
  • 23个常见设计模式
  • ……

这是后话了。