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();

    }

}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章