设计模式六大原则(四)依赖倒置原则

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/yangshuaionline/article/details/86004748

设计模式六大原则

定义:程序要依赖于抽象接口,不要依赖于具体实现。降低客户与实现模块间的耦合。

举例子:

有小明、小丽、小王三个同学,下面要让它们做自我介绍。

首先看看不用依赖倒置原则设计出来的程序:

public class Say {
    class XiaoMing{
        public void say(){
            Log.w("打印","大家好,我叫小明!");
        }
    }
    class XiaoLi{
        public void say(){
            Log.w("打印","大家好,我叫小丽!");
        }
    }
    class XiaoWang{
        public void say(){
            Log.w("打印","大家好,我叫小王!");
        }
    }
    public void say(String name){
        if(name.equals("小明")){
            XiaoMing xiaoMing = new XiaoMing();
            xiaoMing.say();
        }else if(name.equals("小丽")){
            XiaoLi xiaoLi = new XiaoLi();
            xiaoLi.say();
        }else if(name.equals("小王")){
            XiaoWang xiaoWang = new XiaoWang();
            xiaoWang.say();
        }
    }
}

这样写三个还不明显,但是如果拓展下,全班50名学生每个人都要做自我介绍,那么就要写50词say()方法。并且一旦代码成型,要修改为每人唱一首歌,要修改多个地方,非常麻烦。
下面用依赖倒置原则简单修改下:

public class Say {
    interface ToDo{ 
        void say();
    }
    class XiaoMing implements ToDo{
        @Override
        public void say(){
            Log.w("打印","大家好,我叫小明!");
        }
    }
    class XiaoLi implements ToDo{
        @Override
        public void say(){
            Log.w("打印","大家好,我叫小丽!");
        }
    }
    class XiaoWang implements ToDo{
        @Override
        public void say(){
            Log.w("打印","大家好,我叫小王!");
        }
    }
    public void say(String name){
        ToDo toDo = null;
        if(name.equals("小明")){
            toDo = new XiaoMing();
        }else if(name.equals("小丽")){
            toDo = new XiaoLi();
        }else if(name.equals("小王")){
            toDo = new XiaoWang();
        }
        toDo.say();
    }
}

根据依赖倒置原则修改了之后,代码逻辑清晰,无论多少个学生,只需要调用一次say()方法即可,并且如果需要更换行为,只需要更换一次调用即可。

猜你喜欢

转载自blog.csdn.net/yangshuaionline/article/details/86004748
今日推荐