修己安人的技术博客(新地址:http://zhonghua.cnblogs.com)

三纲:明德、新民、止于至善; 八目:格物、致知、诚意、正心、修身、齐家、治国、平天下。
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

OCP 开闭原则

Posted on 2008-01-23 14:46  换个了新的博客:http://zhonghua.cnblogs.com  阅读(1365)  评论(3编辑  收藏  举报

OCP 开闭原则:“软件实体(类、模块、方法等)应该是可以扩展的,但是不可修改。”

      开闭原则可以说是OOD中最基本的一个原则,在设计模式中处处可见,同时也是IoC的基础,OCP原则,是程序员向设计师发展的第一个必会OOD原则。

      假设我们开发了一个操作系统,在开发之前,我们不知道我们的操作系统会支持哪些厂商的打印机,因为打印机厂商不断的在倒闭与增加。为了很方便的支持各种打印机并不修改我们的操作系统源程序,我们必须要公布一个打印机驱动接口,并针对找个接口开发管理程序。于是,我们便有了以下设计:

      其中,我们IPrint接口是我们向外公布的接口,如果想要在我们的操作系统上使用他们的打印机,那就要实现找个接口。Printer类是一个打印者类,他的功能是获取打印驱动程序的名称、对象,以及获取相关的打印驱动。
这个组件,针对各种打印机厂商,IPrint接口是开放的,可以实现,封装他们自己的特性;针对Printer类是关闭的,不允许修改。如果有新打印机产品推出,只要实现IPrint接口,就能在我们的操作系统上运行。这样,就达到了我们以不变应万变的目的。

以下是Demo源程序。
OCP Demo