三、开放-封闭(开闭)原则-The Open-Closed Principle

开放-封闭原则:是说软件实体(类、模块、函数等)应该可以扩展,但是不可修改;

也就是说:对于扩展是开放的(open for extension),对于更改是封闭的(closed for modification);


举个例子更能说明:这个模式就好比是我国的“一国两制”一样,大陆的社会主义制度肯定不能修改,而香港澳门长期在资本主义制度下管理和发展,所以回归时强行修改香港和澳门的制度是不合理的,那里的老百姓肯定不答应,想在整个管理制度上突然进行彻底的变化是不现实的;因此为了回归的大局,增加一种制度;在软件设计模式中,这种不能修改,但是可以扩展的思想就是开-闭原则;
“一国两制”---其实就是对归属的修改关闭,对制度的扩展开放;


注意:是需求就有可能会变化,但是前期设计一个类后期需求变了而让这个类完全不变是不存在的;无论模块做得有多’封闭‘,都会存在一些无法对之封闭的变化,所以面对需求,对程序的改动是通过增加新代码进行的,而不是更改现有的代码,这才是’开闭原则‘的精髓所在。

其实,我们在第二章的-策略模式就已经使用了此原则了;我们增加一个抽象的算法类,通过一些面向对象的手段,如继承,多态等隔离具体的算法与clien耦合,当需求发生变化,要求增加一个新的算法时,我们只需要增加一个新的算法,而不是修改已经存在的算法和client;

开放-封闭原则是面向对象设计的核心所在。遵循这个原则是面向对象所声称:可维护、可扩展、可复用、灵活性好的具体体现。开发人员应该仅对程序中频繁变化的那部分做出抽象,然而,对于应用程序的每个部分都刻意地进行抽象不是一个好主意。拒绝不成熟的抽象;

你可能感兴趣的:(三、开放-封闭(开闭)原则-The Open-Closed Principle)