码迷,mamicode.com
首页 > 其他好文 > 详细

Dependence Inversion Principle

时间:2016-09-26 18:12:41      阅读:90      评论:0      收藏:0      [点我收藏+]

标签:dependence inversion principle   依赖反转   

设计原则之依赖反转原则


动机:当类里面含有属性类,如果直接写类,代码太死,可以考虑将属性类变成接口,方便扩展。

结论:高级类不直接使用低级类,使用接口作为抽象层。Creational Design Patterns可以帮助我们实现依赖反转原则,比如工厂模式,抽象工厂模式,原型模式。


Bad Example:

缺点:

    1、当出现一个新的工人superWorker,不得不修改Manager的源代码

    2、Manger里面已经存在的代码也会被影响,比如方法里面用到Worker

class Worker {

    public void work() {

        //working

    }

}

class Manager{

    Work worker;



    public void setWorker(Worker w) {

        worker = w;

    }


    public void manage() {

        worker.work();

    }

}


class SuperWorker {

    public void work() {

        //.... working much more

    }

}


Good Example:

    好处:

        1、添加superWorker不需要修改Manager类

        2、对Manager最小的修改风险

interface IWorker {

    public void work();

}


class Worker implements IWorker{

    public void work() {

        // ....working

    }

}


class SuperWorker  implements IWorker{

    public void work() {

        //.... working much more

    }

}


class Manager {

    IWorker worker;


    public void setWorker(IWorker w) {

        worker = w;

    }


    public void manage() {

        worker.work();

    }

}


本文出自 “不死的小强” 博客,请务必保留此出处http://qianray.blog.51cto.com/4607992/1856666

Dependence Inversion Principle

标签:dependence inversion principle   依赖反转   

原文地址:http://qianray.blog.51cto.com/4607992/1856666

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!