一、定义(程序对修改关闭,对扩展开放)
①、一个软件实体如类,模块和函数应该对扩展开放(对于提供方来说),对修改关闭(对于使用方来说)。用抽象构建框架,用实现扩展细节。
②、当软件需要变化时,尽量通过扩展软件实体的行为来实现变化,而不是通过修改已有的代码来实现变化。
③、编程中遵循其它原则,以及使用设计模式的目的就是遵循开闭原则。
二、案例
/** * @author 作者 ki16: * @version 创建时间:2021年7月23日 下午2:52:08 * */ public class Ocp { public static void main(String[] args) { UseTool use = new UseTool(); System.out.println("使用" + use.use(new FishingRod())); System.out.println("使用" + use.use(new Fork())); } } //进行捕捞(使用方) class UseTool{ public String use(Tool too) { return too.fishing(); } } //工具(提供方) abstract class Tool{ int type; public abstract String fishing(); } class FishingRod extends Tool{ public FishingRod() { super.type = 1; } @Override public String fishing() { return "鱼竿"; } } class Fork extends Tool{ public Fork() { super.type = 2; } @Override public String fishing() { return "叉子"; } }