设计原则之开闭原则Open Close Principle

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了设计原则之开闭原则Open Close Principle相关的知识,希望对你有一定的参考价值。

翻译自http://www.oodesign.com

设计原则之开闭原则


动机:一个聪明的应用设计和代码编写应该考虑到开发过程中的频繁修改代码。通常情况下,一个新功能的增加会带来很多的修改。这些修改已存在的代码应该要最小化,

总结:软件应该对扩展开发,对修改关闭。装饰器模式,观察者模式,工厂模式可以帮助我们队代码做最小的修改。

Bad Example:

    缺点:

        1、当新的shape被添加,开发者要花大量时间去理解GraphicEditor源码。。

        2、添加新shape也许会影响已经存在的功能

技术分享

// Open-Close Principle - Bad example

 class GraphicEditor {

     public void drawShape(Shape s) {

         if (s.m_type==1)

             drawRectangle(s);

         else if (s.m_type==2)

             drawCircle(s);

     }

     public void drawCircle(Circle r) {....}

     public void drawRectangle(Rectangle r) {....}

 }

 class Shape {

     int m_type;

 }

 class Rectangle extends Shape {

     Rectangle() {

         super.m_type=1;

     }

 }

 class Circle extends Shape {

     Circle() {

         super.m_type=2;

     }

 } 

Good Example

    优点:

        1、不需要理解GraphicEditor源码。

        2、画图功能代码移到每个具体的shape类,降低了修改老功能代码。

技术分享

// Open-Close Principle - Good example
 class GraphicEditor {
 	public void drawShape(Shape s) {
 		s.draw();
 	}
 }

 class Shape {
 	abstract void draw();
 }

 class Rectangle extends Shape  {
 	public void draw() {
 		// draw the rectangle
 	}
 }



本文出自 “不死的小强” 博客,请务必保留此出处http://qianray.blog.51cto.com/4607992/1853485

以上是关于设计原则之开闭原则Open Close Principle的主要内容,如果未能解决你的问题,请参考以下文章

面向对象设计原则之开闭原则

设计模式——六大原则之开闭原则

设计原则之-开闭原则(Open Close Principle, OCP)

6大设计原则之开闭原则

设计模式七大原则之开闭原则学习

学习设计模式 - 六大基本原则之开闭原则