开闭原则(Open-Closed Principle, OCP):一个软件实体应当对扩展开放,对修改关闭。即软件 实体应尽量在不修改原有代码的情况下进行扩展。
例子:这里使用伪代码:
现在有一个新需求,需要打印图标D,这里的代码是不符合的,需要增加D图标,需要修改现有代码,这是不符合开闭设计原则的。
开闭原则设计理念:增加新的代码,对原有功能代码无修改。
上面的功能如何使用开闭原则重构:
1.增加抽象化接口
2.创建抽象化的子类
3.实现子类的方法
4.重构图表方法
为了满足开闭原则,需要对系统进行抽象化设计,抽象化是开闭原则的关键。在Java、C#等编程语言中,可以为系统定义一个相对稳定的抽象层,而将不同的实现行为移至具体的实现层中完成。在很多面向对象编程语言中都提供了接口、抽象类等机制,可以通过它们定义系统的抽象层,再通过具体类来进行扩展。如果需要修改系统的行为,无须对抽象层进行任何改动,只需要增加新的具体类来实现新的业务功能即可,实现在不修改已有代码的基础上扩展系统的功能,达到开闭原则的要求。
里氏代换原则(LiskovSubstitutionPrinciple,LSP):所有引用基类(父类)的地方必须能透明地使用其子类的对象。
这里使用AChart替换AbstractChart的方式就是里氏替换原则。
领取专属 10元无门槛券
私享最新 技术干货