• 开闭原则


    开闭原则


    基本介绍:

    1. 开闭原则是编程中最基础,最重要的设计原则
    2. 一个软件实体如类、模块和函数应该对拓展开放,对修改关闭用抽象构建框架,用实现扩展细节
    3. 当软件需要变化的时候,尽量通过扩展软件实体的行为来实现变化,而不是通过修改已有的代码来实现变化
    4. 编程中遵守其他原则,以及使用设计模式的目的就是遵循开闭原则

    如以下例子:实现画图功能

    class GraphicEditor{
    	public void drawShape(Shape s) {
    		if(s.type==1) {
    			drawRectangle(s);
    		}else if(s.type==2) {
    			drawCirle(s);
    		}
    	}
    	public void drawRectangle(Shape s) {
    		System.out.println("画出正方形");
    	}
    	public void drawCirle(Shape s) {
    		System.out.println("画出圆");
    	}
    }
    
    class Shape{
    	int type;
    }
    class Rectangle extends Shape{
    	
    }
    class Cirle extends Shape{
    	
    }
    

      上述方法存在问题在于每次新加一个类的时候都会导致原来的代码的修改

    需要符合开闭原则则需要进行代码重构

    class GraphicEditor{
    	public void drawShape(Shape s) {
    		s.drawShape();
    	}
    }
    
    class Shape{
    	int type;
    	public void drawShape() {
    		
    	}
    	
    }
    class Rectangle extends Shape{
    	public Rectangle() {
    		// TODO Auto-generated constructor stub
    		super.type=2;
    	}
    	@Override
    	public void drawShape() {
    		// TODO Auto-generated method stub
    		System.out.println("画出正方形");
    	}
    	
    }
    class Cirle extends Shape{
    	public Cirle() {
    		// TODO Auto-generated constructor stub
    		super.type=1;
    	}
    	@Override
    	public void drawShape() {
    		// TODO Auto-generated method stub
    		System.out.println("画出圆");
    	}
    }
    

      


     注意事项与细节:

    1. 开闭原则说白了就是,应该在不修改现有代码的基础上,引入新功能。
    2. 开闭原则中的“开”,是指对于组件功能的扩展是开放的,是允许对其进行功能扩展的;开
    3. 闭原则中的“闭”,是指对于原有代码的修改是封闭的,即不应该修改原有的代码。
    4. 而实际上,要做到百分之百的封闭是不可能的,但是在系统设计的时候,还是应该尽量做到这一点。

     

  • 相关阅读:
    BZOJ_2039_[2009国家集训队]employ人员雇佣_ 最小割
    BZOJ_4238_电压_树上差分+dfs树
    BZOJ_4516_[Sdoi2016]生成魔咒_后缀数组+ST表+splay
    BZOJ_3048_[Usaco2013 Jan]Cow Lineup _双指针
    BZOJ_3689_异或之_可持久化Trie+堆
    BZOJ_2006_[NOI2010]超级钢琴_贪心+堆+ST表
    BZOJ_3675_[Apio2014]序列分割_斜率优化
    BZOJ_4518_[Sdoi2016]征途_斜率优化
    BZOJ_1407_[Noi2002]Savage_EXGCD
    [转载]ubuntu常用命令
  • 原文地址:https://www.cnblogs.com/wuyiyuan/p/15236344.html
Copyright © 2020-2023  润新知