• 开闭原则


    开闭原则


    基本介绍:

    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. 而实际上,要做到百分之百的封闭是不可能的,但是在系统设计的时候,还是应该尽量做到这一点。

     

  • 相关阅读:
    AtCoder Grand Contest 015 C
    AtCoder Grand Contest 011 F
    AtCoder Regular Contest 076 E
    AtCoder Grand Contest 016 B
    AtCoder Grand Contest 010 F
    AtCoder Regular Contest 081 F
    AtCoder Grand Contest 018 D
    AtCoder Regular Contest 076 F
    yii2.0 如何按需加载并管理CSS样式及JS脚本
    ebay商品基本属性组合成数据表格式,可用上传到系统递交数据
  • 原文地址:https://www.cnblogs.com/wuyiyuan/p/15236344.html
Copyright © 2020-2023  润新知