软件设计七大原则浅谈

七大原则

  • 1.开闭原则
  • 2.依赖倒置原则
  • 3.单一职责原则
  • 4.接口隔离原则
  • 5.迪米特法则
  • 6.里氏替换原则
  • 7.合成/复用原则

开闭原则

  • 定义: 一个软件实体如类、模块和方法应该对扩展开放,对修改关闭;

  • 用抽象构建框架,用实现扩展细节;

  • 优点:提高系统的可复用性和可维护性

实例
在我们实际开发中,比如现在我们以商品购买为例子,售卖商品作为一个接口,蔬菜是一个商品的实现,具体代码如下:

  • 商品接口
/** * @Description:商品接口 * @author: AnonyStar * @Date: 2019/3/26 */
public interface IItem {

 /** 获取商品名*/
 String getName();
 
 //获取商品
 String getPrice();
 //库存
 String getStock();
 
 
}
  • 蔬菜类:
	
/** * @Description:蔬菜商品类 * @author: AnonyStar Vegetables * @Date: 2019/3/26 */
public class VegetablesItem implements IItem {

    String name;
    String price;
    String stock;

    @Override
    public String getName() {
        return name;
    }

    @Override
    public String getPrice() {
        return price;
    }

    @Override
    public String getStock() {
        return stock;
    }
}

  • 测试:
/** * @Description: 测试 * @author: AnonyStar Vegetables * @Date: 2019/3/26 */
public class App {


    public static void main(String[] args) {
        //接口引用只想具体的实现类的实例化对象
        IItem iItem = new VegetablesItem();
        
        System.out.println(iItem.getName());
    }
}

在我们正常的使用过程中,突然需要对蔬菜商品进行促销活动,那么这时候我们需要对我们原有的代码进行修改, 修改方案有如下三种:

  • 1.修改IItem接口类,添加打折价格方法,那么我们需要对接口实现类调用全部进行修改,而且如果商品类的实现有非常多,那会直接导致需要修改大量的实现类。
    软件设计七大原则浅谈_第1张图片
  • 2.直接修改蔬菜商品的实现类中的方法,将原来获取商品价格的方法内部实现打折操作,但是这样修改后会导致得不到原来的价格了;
    软件设计七大原则浅谈_第2张图片
  • 3.进行扩展,实现蔬菜商品类的扩展子类,里面重写getPrice()方法,不对原来的代码侵入。此时我们只需要是实例化蔬菜的促销子类就可以了,而不需要对原来的代码进行修改,这就是开闭原则的体现
    软件设计七大原则浅谈_第3张图片软件设计七大原则浅谈_第4张图片

依赖倒置原则

  • 定义: 高层模块不应该依赖底层模块,二者应该依赖其抽象
  • 抽象不应该依赖细节;细节应该依赖抽象
  • 优点:针对接口编程,不要针对实现编程

待更新…

你可能感兴趣的:(设计模式)