您的位置:首页 > 运维架构 > 网站架构

【架构师之路】-【01设计模式】-07设计原则之开闭原则

2017-03-13 10:09 225 查看
定义:开就是对扩展是开放的;对修改是关闭的。具体而言;当要对一个功能进行添加时;可以在原有的基础上添加一个类;但不允许去修改原有的类。

举例说明:定义一个Person类 ;里面有一个Driver()的方法;传入一个Car的参数;然后调用Car。move方法

[java] view
plain copy

 





public class Person{  

      

    public void drive(Car car) {  

        car.move();  

    }  

}  

  

public class Car {  

    puboic void move() {  

        system.out.println(" 小汽车移动  ");  

    }  

}  

如果现在我们要开的是一个Mpv呢?修改代码如下:

[java] view
plain copy

 





public class Person{  

      

    public void drive(Mpv mpv) {  

        mpv.move();  

    }  

}  

  

public class Car {  

    puboic void move() {  

        system.out.println(" 小汽车移动  ");  

    }  

}  

  

public class Mpv {  

    puboic void move() {  

        system.out.println(" mpv移动  ");  

    }  

}  

这样子的话我们是不是修改了类里的方法参数;当然你也可以重载一个drive()方法。如果我们面向接口编程会是什么样子呢?

[java] view
plain copy

 





public class Person{  

      

    public void drive(Vehicle vehicle) {  

        vehicle.move();  

    }  

}  

  

public interface Vehicle {  

    public void move();  

}  

  

public class Car implements Vehicle{  

    public void move() {  

        system.out.println(" 小汽车移动  ");  

    }  

}  

  

public class Mpv implements Vehicle{  

    puboic void move() {  

        system.out.println(" mpv移动  ");  

    }  

此处如果要添加一个MPV;则第一种方式为修改参数Car  为Mpv(对修改原有类为关闭的);但第二种将其抽象为交通工具后;只需要添加一个Mpv的类;然后传入对应的参数即可(对扩展是开放的);

总结 :用抽象构建框架,用实现扩展细节
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: