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();
????}
}
轉載于:https://blog.51cto.com/qianray/1856666
總結
以上是生活随笔為你收集整理的Dependence Inversion Principle的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Dubbo服务者
- 下一篇: 树莓派:VNC远程控制