OCP 开闭原则:“软件实体(类、模块、方法等)应该是可以扩展的,但是不可修改。”
开闭原则可以说是OOD中最基本的一个原则,在设计模式中处处可见,同时也是IoC的基础,OCP原则,是程序员向设计师发展的第一个必会OOD原则。
假设我们开发了一个操作系统,在开发之前,我们不知道我们的操作系统会支持哪些厂商的打印机,因为打印机厂商不断的在倒闭与增加。为了很方便的支持各种打印机并不修改我们的操作系统源程序,我们必须要公布一个打印机驱动接口,并针对找个接口开发管理程序。于是,我们便有了以下设计:
其中,我们IPrint接口是我们向外公布的接口,如果想要在我们的操作系统上使用他们的打印机,那就要实现找个接口。Printer类是一个打印者类,他的功能是获取打印驱动程序的名称、对象,以及获取相关的打印驱动。
这个组件,针对各种打印机厂商,IPrint接口是开放的,可以实现,封装他们自己的特性;针对Printer类是关闭的,不允许修改。如果有新打印机产品推出,只要实现IPrint接口,就能在我们的操作系统上运行。这样,就达到了我们以不变应万变的目的。
以下是Demo源程序。
OCP Demo