码迷,mamicode.com
首页 > 其他好文 > 详细

开闭原则

时间:2019-07-24 16:24:18      阅读:98      评论:0      收藏:0      [点我收藏+]

标签:imp   工具   业务   代码   六大原则   alc   ide   需求   out   

定义:

一个软件实体如类、模块、函数应该对扩展开放,对修改关闭。无非就是用抽象构建框架,用实现扩展细节。

问题由来:

做过实际项目的应该都会深有体会,一个软件在其生命周期内都会发生很多变化,这几乎是不可避免的。无论是需求的变化、业务逻辑的变化、程序代码的变化等等,这些变化都有可能对整个软件的稳定性造成一定的威胁。而开闭原则就是应对这些变化的,它告诉我们应该通过扩展来实现变化,而不是通过修改已有的代码。

例子:

公司需要做一个能给手机充电的充电器。

代码如下:

/**
 * 充电器接口
 */
public interface ICharge {
    void charge();
}
/**
 * 充电器实现类
 */
@Service
public class ChargeImpl implements ICharge{
    @Override
    public void charge() {
        System.out.println("只能给手机充电");
    }
}
需求变更:

充电器不仅能给手机充电,还能够给耳机充电。

应对措施:

有人说直接修改ChargeImpl实现类的charge方法不就行了嘛。可能有很多人在实际项目中都是这么做的,但是这就违背了开闭原则,开闭原则要求我们尽量不要修改已有的代码,尽量通过扩展来实现改变。
可以增加一个UniversalChargerImpl实现类来继承ChargeImpl实现类,并重写charge方法。

代码如下:

/**
 * 万能充电器
 */
@Service
public class UniversalChargerImpl extends ChargeImpl implements ICharge{
    @Override
    public void charge() {
        System.out.println("既能给手机充电也能给耳机充电");
    }
}

总结:

  • 开闭原则是对扩展开放,对修改关闭。
  • 开闭原则的主旨是为了拥抱变化。
  • 在六大原则中,开闭原则只是一个思想,没有具体实际操作方法。其他五大原则都是为了实现这个开闭思想的一些方法和工具。
  • 想要遵守开闭原则,就需要一个设计合理的系统。可以说在做系统设计的时候就要考虑到未来的扩展和改变。

开闭原则

标签:imp   工具   业务   代码   六大原则   alc   ide   需求   out   

原文地址:https://www.cnblogs.com/dashuaiguo/p/11238747.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!