设计模式原则之依赖倒置原则
依赖倒置原则
依赖倒置原则(Dependence Inversion Principle,简称DIP)
依赖倒置原则的原始定义是:High level modules should not depend upon low level modules. Both should depend upon abstractions. Abstractions should not depend upon details. Details should depend upon abstractions
即
- 高层模块不应该依赖低层模块,两者都应该依赖其抽象;
- 抽象不应该依赖细节;
- 细节应该依赖抽象。
更加精简的定义就是“面向接口编程”——OOD(Object-Oriented Design,面向对象设计)的精髓之一
简单的代码解释
需求
有个接收者需要接收来自邮箱的信息,但之后可能需要接收来自其他信息交流软件的信息
版本一
public class Email {
public String message(){
return "来自邮箱的信息";
}
}
public class Person {
public void receive(Email email){
System.out.println(email.message());
}
}
public class MainClass {
public static void main(String[] args) {
Person person = new Person();
person.receive(new Email());
}
}
UML类图

控制台运行结果

这样看起来是接收了来自邮箱的信息 若今后有新的信息来源 就必须修改Person类这就违反开放封闭原则
改进版本
public interface Comunication {
String message();
}
public class Email implements Comunication{
public String message(){
return "来自邮件的信息";
}
}
public class WeChat implements Comunication{
public String message(){
return "来自微信的信息";
}
}
public class Person {
public void receive(Comunication comunication){
System.out.println(comunication.message());
}
}
public class MainClass {
public static void main(String[] args) {
Person person = new Person();
person.receive(new Email());
person.receive(new WeChat());
}
}
UML类图

本来Person类依赖的是Emai这个类 现在依赖的是Comunication这个接口 依赖的是抽象 使后期的扩展和修改成为了可能
依赖传递的三种方式
1接口声明依赖对象
2.构造函数传递依赖对象
3.Setter方法传递依赖对象
浙公网安备 33010602011771号