php设计模式的六大原则(六):迪米特法则
生活随笔
收集整理的這篇文章主要介紹了
php设计模式的六大原则(六):迪米特法则
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
為什么80%的碼農都做不了架構師?>>> ??
<?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://my.oschina.net/shyl/blog/531542
總結
以上是生活随笔為你收集整理的php设计模式的六大原则(六):迪米特法则的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: NAO机器人学习小计
- 下一篇: 互联网时代IT系统的变革-硬件系统定制化