美文网首页
设计原则——开闭原则

设计原则——开闭原则

作者: 写一本2000000的书 | 来源:发表于2019-08-22 11:35 被阅读0次

概念:一个软件实体如类、模块和函数应该对扩展开放,对修改关闭。不修改源码,通过新增类扩展功能。

例子: 描述车的属性,颜色,轮胎个数,现在加装一个导航仪(需要改动的地方)

interface ICar {    
     String getColor();
     
     int getWheels();
}
interface INewCar extends ICar {

     String getNavigation();

 }
class Car implements ICar {

    private String color;

    private int wheels;

     
    @Override
    public String getColor() {
        // TODO Auto-generated method stub
        return color;
    }

    @Override
    public int getWheels() {
        // TODO Auto-generated method stub
        return wheels;
    }
     
    public Car(String color, int wheels) {
        this.color = color;
        this.wheels = wheels;
    }

    @Override
    public String toString() {
        return "Car [color=" + color + ", wheels=" + wheels + "]";
    }

 }
class NewCar implements INewCar {

    private String color;

    private int wheels;
    
    private String navigation;

    public NewCar(String color, int wheels, String navigation) {
        this.color = color;
        this.wheels = wheels;
        this.navigation = navigation;
    } 
    
    @Override
    public String getColor() {
        // TODO Auto-generated method stub
        return color;
    }

    @Override
    public int getWheels() {
        // TODO Auto-generated method stub
        return wheels;
    }

    @Override
    public String getNavigation() {
        // TODO Auto-generated method stub
        return navigation;
    }

    @Override
    public String toString() {
        return "NewCar [color=" + color + ", wheels=" + wheels + ", navigation=" + navigation + "]";
    }
     
 }

测试

import java.util.ArrayList;

public class Test {
    
    private final static ArrayList<ICar> carList = new ArrayList<ICar>();
    
    static {
        carList.add(new Car("red", 4));
        carList.add(new Car("white", 2));
        carList.add(new NewCar("black", 4, "谷歌导航"));
    }
    
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        for (ICar car : carList) {
//          car.toString();
            System.out.println(car.toString());
        }
    }
}

打印结果

Car [color=red, wheels=4]
Car [color=white, wheels=2]
NewCar [color=black, wheels=4, navigation=谷歌导航]

总结:开闭原则用扩展接口去实现,不改变源码,例子中直观的感受就是增加了新接口INewCar和新实现类NewCar.

相关文章

  • 面向对象设计原则(二)开闭原则

    面向对象设计原则之开闭原则 开闭原则是面向对象的可复用设计的第一块基石,它是最重要的面向对象设计原则。 开闭原则的...

  • OOP程序设计规则

    开闭原则(Open-Closed Principle,OCP) 开闭原则是这七大设计原则中最常见、最基本的开闭原则...

  • 开闭原则

    个人博客原文:开闭原则 设计模式六大原则之六:开闭原则。 简介 姓名 :开闭原则 英文名 :Open Closed...

  • 设计模式分类以及设计模式原则

    设计模式原则 设计模式原则 开闭原则(Open Closed Principle,OCP) 里氏代换原则(Lisk...

  • 六大设计原则 - 开闭原则【Open Close Princip

    六大设计原则 单一职责原则 里式替换原则 依赖倒置原则 接口隔离原则 迪米特原则 开闭原则 开闭原则 定义: So...

  • 从一个例子看开闭原则

    什么开闭原则? 开闭原则(Open Closed Principle)是Java世界里最基础的设计原则,它指导我们...

  • iOS开闭原则和替换原则

    什么叫开闭原则? 六大模式设计原则之一的开闭原则是比较重要的,开闭原则其实就是“抽象构建框架,实现扩展细节...

  • 设计原则-开闭原则

    开闭原则(OCP) 开闭原则的定义 开闭原则是java世界里最基础的设计原则,它指导我们如何建立一个稳定,灵活的系...

  • 设计模式的设计原则

    设计模式的设计原则 面向对象五大设计原则 单一职责原则 里氏替换原则 依赖倒置原则 接口隔离原则 开闭原则 设计模...

  • python和设计模式17

    Open–closed principle 开闭原则 OCP 开闭原则指的是对扩展开发,对修改关闭。 在设计原则中...

网友评论

      本文标题:设计原则——开闭原则

      本文链接:https://www.haomeiwen.com/subject/ekggsctx.html