[设计模式原则]第五回:迪米特原则
生活随笔
收集整理的這篇文章主要介紹了
[设计模式原则]第五回:迪米特原则
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1.引言
迪米特法則(Law of Demeter)又叫作最少知識原則(LKP,Least Knowledge Principle),就是說一個對象應當對其他對象有盡可能少的了解,類與類之間的了解的越多,關系越密切,耦合度越大,當一個類發生改變時,另一個類也可能發生變化。
2.引經據典
核心思想:最少依賴
具體體現:
- 類內部應該高內聚,設置相應的權限,有選擇的暴露方法,這就是封裝的奧秘。
- 類的依賴關系盡量減少,保持簡單和獨立,降低耦合。
一些理解,有些東西,可以適當的知道,知道的太多對你不好。關系越復雜,人越不敢接近你。要達到很高的內修養,才能有很好的表現。這些江湖術語都包含一些哲理。
?
3.應用反思
?
//電燈public class Light{public void TurnOn(){if (LifeOver())Console.WriteLine("燈泡亮了");}public void TurnOff(){Console.WriteLine("燈泡黑了");}public bool LifeOver(){Console.WriteLine("壽命還在");return true;}}//電燈開關public class Switch{public void TurnOn(){Light light= new Light();Console.WriteLine("打開開關");light.TurnOn();}public void TurnOff(){Light light = new Light();Console.WriteLine("關上開關");light.TurnOff();}}上面的兩個類 都違反了迪米特原則,Light的LifeOver是一個內部判斷的問題,如果外部不需要知道,可以聲明為 private。Switch類的兩個方法都使用Light,只是一個局部變量,就有兩處依賴,可以聲明為一個類的成員變量,減少一個依賴。如下:
//電燈public class Light{public void TurnOn(){if (LifeOver())Console.WriteLine("燈泡亮了");}public void TurnOff(){Console.WriteLine("燈泡黑了");}private bool LifeOver(){Console.WriteLine("壽命還在");return true;}}//電燈開關public class Switch{Light light = new Light();public void TurnOn(){Console.WriteLine("打開開關");light.TurnOn();}public void TurnOff(){Console.WriteLine("關上開關");light.TurnOff();}}4.規則建議
- 在類的劃分上,應當創建弱耦合的類,類與類之間的耦合越弱,就越有利于實現可復用的目標。
- 在類的結構設計上,每個類都應該降低成員的訪問權限。
- 在類的設計上,只要有可能,一個類應當設計成不變的類。
- 在對其他類的應用上,一個對象對其他類的對象的應用應該降到最低。
- 盡量限制局部變量的有效范圍。
?
轉載于:https://www.cnblogs.com/qqlin/archive/2012/12/29/2829481.html
總結
以上是生活随笔為你收集整理的[设计模式原则]第五回:迪米特原则的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: vbs获取程序窗体句柄_PyQt5 GU
- 下一篇: 2022 Java面试题