面向对象之迪米特法则
生活随笔
收集整理的這篇文章主要介紹了
面向对象之迪米特法则
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
轉自:http://my.oschina.net/shyl/blog/531542
<?phpclass Teacher {//老師對學生發布命令,清一下女生public function commond(GroupLeader $groupLeader){//初始化女生for($i=0; $i<20; $i++){$listGirls[] = new Girl();}//告訴體育委員開始執行清查任務$groupLeader -> countGirls($listGirls);} }class GroupLeader {//有清查女生的工作public function countGirls($listGirls = array()){echo '女生的數量是:' . sizeof($listGirls);} }class Girl {}class Client {public static function doing() {$teacher= new Teacher();//老師發布命令$teacher -> commond(new GroupLeader());} }Client :: doing();class Teacher {public function commond(GroupLeader $groupLeader){//告訴體育委員開始執行清查任務$groupLeader -> countGirls();} }class GroupLeader {private $_listGirls = array();//傳遞全班的女生public function __construct($listGirls){$this -> _listGirls = $listGirls;}//有清查女生的工作public function countGirls(){echo "女生數量是:" . sizeof($this -> _listGirls);} }class Girl {}class Client {public static function doing() { //初始化女生for($i=0; $i<20; $i++){$listGirls[] = new Girl();}$teacher= new Teacher();//老師發布命令$teacher -> commond(new GroupLeader($listGirls));} }Client :: doing();一個對象應該對其他對象了解最少。
迪米特法則的核心就是降低類鍵的耦合,從而提高類的復用性。
具體體現:
①?在類的劃分上,應該創建有弱耦合的類;
②?在類的結構設計上,每一個類都應當盡量降低成員的訪問權限;
③?在類的設計上,只要有可能,一個類應當設計成不變類;
④?在對其他類的引用上,一個對象對其它對象的引用應當降到最低;
⑤?盡量降低類的訪問權限;
⑥?謹慎使用序列化功能(類或接口在客戶端變更,卻未在服務端同步更新,引發序列化失敗,,項目管理易疏忽);
⑦?不要暴露類成員,而應該提供相應的訪問器(屬性)。
迪米特法則主要運用在觀察者模式和中介者模式中
迪米特法則的缺點:
?
1、遵循類之間的迪米特法則會使一個系統的局部設計簡化,因為每個局部都不會與遠距離的對象有直接的關聯;但也會造成不同模塊之間的通信效率降低,會使系統的不同模塊之間不容易協調。
2、在系統中造出大量的小方法,散落在系統的各個角落。這些方法僅傳遞間接的調用,與系統的商務邏輯無關。
轉載于:https://www.cnblogs.com/wangxusummer/p/5251152.html
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的面向对象之迪米特法则的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: PCB制图 | Altium Desig
- 下一篇: OPENCV图像变换-1