七大原则
- 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接口类,添加打折价格方法,那么我们需要对
接口、实现类、调用全部进行修改,而且如果商品类的实现有非常多,那会直接导致需要修改大量的实现类。 - 2.直接修改蔬菜商品的实现类中的方法,将原来获取商品价格的方法内部实现打折操作,但是这样修改后会导致得不到原来的价格了;
- 3.进行扩展,实现蔬菜商品类的扩展子类,里面重写
getPrice()方法,不对原来的代码侵入。此时我们只需要是实例化蔬菜的促销子类就可以了,而不需要对原来的代码进行修改,这就是开闭原则的体现
依赖倒置原则
- 定义: 高层模块不应该依赖底层模块,二者应该依赖其抽象
- 抽象不应该依赖细节;细节应该依赖抽象
- 优点:针对接口编程,不要针对实现编程
待更新…