【架构师之路】-【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的类;然后传入对应的参数即可(对扩展是开放的);
总结 :用抽象构建框架,用实现扩展细节
举例说明:定义一个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的类;然后传入对应的参数即可(对扩展是开放的);
总结 :用抽象构建框架,用实现扩展细节
相关文章推荐
- 【架构师之路】-【01设计模式】-05设计原则之接口分离原则
- 【架构师之路】-【01设计模式】-04设计原则之依赖倒转原则
- 【架构师之路】-【01设计模式】-03设计原则之里式替换原则
- 【架构师之路】-【01设计模式】-02设计原则之单一职责原则
- 【架构师之路】-【01设计模式】-01对象之间关系
- 【架构师之路】-【01设计模式】-08所有模式
- 设计模式--6大原则--开闭原则
- 设计模式6大原则之开闭原则(Open Close Principle)
- 设计模式--6大原则--开闭原则
- 设计模式六大原则(6):开闭原则
- 设计模式之六大原则——开闭原则(OCP)
- 设计模式六大原则----------开闭原则
- [设计模式原则]开闭原则(Open - ClosedPrinciple, OCP)
- 设计模式六大原则(6):开闭原则(转载)
- 设计模式六大原则(6):开闭原则OCP(The Open/Closed Principle )
- 设计模式6大原则:开闭原则
- 教为学:设计模式学习之路(一):设计模式的基本设计原则
- 设计模式六大原则(6):开闭原则
- 第4章 考研求职两不误---开放-封闭原则(设计模式六大原则(6):开闭原则)
- 设计模式六大原则之--开闭原则(OCP)