接下来开始真正的讨论设计模式了。先是设计模式的基础,开闭原则,记得我上次去笔试的时候,还被问到了开闭原则,可见它的重要性。事实上开闭原则是面向对象可复用设计的一块基石。
开闭原则是:
一个软件实体应当对扩展开放,对修改关闭。(Software entities should be open for extension, but closed for modification.)
意思是一个好的设计的模块,可以在不被修改的前提下扩展。
那么如何在面向对象中做到开闭原则呢?
关键在于抽象化,把系统不会改变的东西设计到抽象的接口或者抽象类里面,然后以后的改动都不会动到这个抽象类,这就是对修改关闭,但是如果想要修改,可以继承或是实现,这就使对修改开放。
另一个角度的开闭原则是“可变性封装”:
- 一种可变性不应当散落在代码的很多角落里,而应当被封装到一个对象里。
- 一种可变性不应当与另一种可变性混合在一起
先这么多了,有其他事情。