接口倒置原则

定义

一句话,面向接口编程,细节依赖抽象,抽象不要依赖细节。

示例

反例

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)继承时遵循里氏替换原则

上一篇:Mybatis动态sql之@provider使用


下一篇:Ajax实现邮箱验证案例