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

设计模式六大原则

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

举例子:

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

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

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()方法即可,并且如果需要更换行为,只需要更换一次调用即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值