前言
本文章根据刘伟(Sunny) 的设计模式一书记录的笔记,感谢作者的知识分享。
开闭原则是面向对象的可复用设计的第一块基石,它是最重要的面向对象设计原则。
定义
开闭原则:一个软件实体应该对扩展开放,对修改关闭。也就是软件实体在尽量不修改原来代码的情况下来进行扩展。
实现
为了满足开闭原则,需要对系统进行抽象化设计,抽象化是开闭原则的关键。在Java、C#等编程语言中,可以为系统定义一个相对稳定的抽象层,而将不同的实现行为移至具体的实现层中完成。在很多面向对象编程语言中都提供了接口、抽象类等机制,可以通过它们定义系统的抽象层,再通过具体类来进行扩展。如果需要修改系统的行为,无须对抽象层进行任何改动,只需要增加新的具体类来实现新的业务功能即可,实现在不修改已有代码的基础上扩展系统的功能,达到开闭原则的要求。
对比
原来设计:
通过抽象满足开闭原则: