对扩展开放_对修改封闭

最近在很多场合都看见设计模式的影子,一直以来,都投入主要时间在搞算法与数据结构,很来发现设计模式真的很重要。有的时候代码的可维护、可重用、可扩展确实胜过单纯的算法效率高。所以拾起大牛书籍《大话设计模式》同时参考网上诸大牛的博客,开始我的设计模式之旅。

今天先介绍一下开放封闭模式。

概念:

软件实体(类、函数、接口等)可以扩展,但不能修改。

解释:  开放是指可扩展,封闭是指不能修改。在架构设计类时,要考虑该类可能要完成的功能以及今后要添加的功能,写好之后就不再修改了。如果需求有变只需增加派生出其他的子类。原来的代码尽可能不动,但完全不修改往往是不可能的。无论模块怎样封闭,都会存在一些与之无法封闭的变化,既然不可能是完全变化封闭,设计人员必须对他设计的模块要应对哪些变化做出选择。他必须先抽象出变化的种类。然后构造抽象类来隔离那些变化。 假设有一个加法类,能够完成当前所有的功能,但当需要减法时又必须修改加法类,这就违反了开放封闭原则,可以尽可能的设计一个抽象的运算类,然后加法、减法类都继承这个抽象的运算类,从而避免修改加法。 再次强调:可以扩展,但不能修改;或者,开放是指可扩展,封闭是指不能修改。

你可能感兴趣的:(对扩展开放_对修改封闭)