zoukankan      html  css  js  c++  java
  • 开闭原则

    开闭原则


    基本介绍:

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

     

  • 相关阅读:
    《面试系列一》一个怂到极点的开始
    NuGet 私房服务使用帮助
    Nuspec 范本文件
    送给前线码农的话 – 大牛们的经典语录
    Visual Studio 增加源码头注释
    为 Orchard 增加 MVC 的脚手架.
    为 Orchard 增加扩展的存储位置
    Orchard 瘦身优化
    Hybrid Multiple Attention Network for Semantic Segmentation in Aerial Images
    【nvidia jetson xavier】 Linux系统安装+Deepstream 5.1环境部署
  • 原文地址:https://www.cnblogs.com/wuyiyuan/p/15236344.html
Copyright © 2011-2022 走看看