定义
一句话,面向接口编程,细节依赖抽象,抽象不要依赖细节。
示例
反例
package com.yyy.severnPrinciple.DependInversePrinciple;
//依赖倒置原则 示例1
/*
* 示例分析
* Person类中的recevieMessage方法强耦合了Email类,若有其他消息,则需重新写接收方法,不符合依赖倒置原则
* */
public class DependInversePrinciple1 {
public static void main(String[] args) {
Person person=new Person();
person.recevieMessage(new Email());
person.recevieMessage1(new WeiXin());
}
}
class Email{
public String getInfo(){
return "Email信息:Hello World!";
}
}
class WeiXin{
public String getInfo(){
return "WeiXin信息:Hello World!";
}
}
class Person{
public void recevieMessage(Email email){
System.out.println(email.getInfo());
}
public void recevieMessage1(WeiXin weiXin){
System.out.println(weiXin.getInfo());
}
}
正例
package com.yyy.severnPrinciple.DependInversePrinciple;
//依赖倒置原则,示例2
//依赖于接口,面向接口编程
public class DependInversePrinciple2 {
public static void main(String[] args) {
Person1 person1=new Person1();
person1.receiveMessage(new Email1());
person1.receiveMessage(new Weixin1());
}
}
interface TReceiver{
public String getInfo();
}
class Person1{
public void receiveMessage(TReceiver recevier){
System.out.println(recevier.getInfo());
}
}
class Email1 implements TReceiver{
@Override
public String getInfo() {
return "Email信息:Hello Word!";
}
}
class Weixin1 implements TReceiver{
@Override
public String getInfo() {
return "微信信息:Hello World!";
}
}
总结
接口倒置原则的中心思想就是面向接口编程。
优点:高内聚,低耦合,可读性,可维护性,以及系统的稳定性。
1)低层模块尽量都要有抽象类或接口,或者都有,程序稳定性更好
2)变量的声明类型最好都是抽象类或接口,这样我们的变量与实际引用之间就多了一层缓存,利于程序的扩展和优化
3)继承时遵循里氏替换原则