Open-Closed Principle
1.Open(Open for extension)
模块的行为必须是开放的,支持扩展的,而不是僵化的.
2.Closed(Closed for modification)
对模块进行扩展时,不应该影响或大规模影响已有模块的其他部分.




















































我们看到Server类是从ClientInterface继承的,不过ClientInterface却不叫ServerInterface叫ClientInterface,原因是我们希望对Client来说ClientInterface是固定下来的,变化的只是Server.开放了,也封闭了:)这实际上就变成了一种策略模式(Gof Strategy).
Bob还提到了一种实现ocp的方法,那就是Template Method



































同时,我们应该仅对程序中呈现频繁变化的那部分做抽象.不成熟的抽象和没有抽象一样的坏.