python设计模式六大原则_php设计模式的六大原则(六):迪米特法则
class?Teacher?{
//老師對學生發(fā)布命令,清一下女生
public?function?commond(GroupLeader?$groupLeader){
//初始化女生
for($i=0;?$i<20;?$i++){
$listGirls[]?=?new?Girl();
}
//告訴體育委員開始執(zhí)行清查任務
$groupLeader?->?countGirls($listGirls);
}
}
class?GroupLeader?{
//有清查女生的工作
public?function?countGirls($listGirls?=?array()){
echo?'女生的數(shù)量是:'?.?sizeof($listGirls);
}
}
class?Girl?{
}
class?Client?{
public?static?function?doing()?{
$teacher=?new?Teacher();
//老師發(fā)布命令
$teacher?->?commond(new?GroupLeader());
}
}
Client?::?doing();
class?Teacher?{
public?function?commond(GroupLeader?$groupLeader){
//告訴體育委員開始執(zhí)行清查任務
$groupLeader?->?countGirls();
}
}
class?GroupLeader?{
private?$_listGirls?=?array();
//傳遞全班的女生
public?function?__construct($listGirls){
$this?->?_listGirls?=?$listGirls;
}
//有清查女生的工作
public?function?countGirls(){
echo?"女生數(shù)量是:"?.?sizeof($this?->?_listGirls);
}
}
class?Girl?{
}
class?Client?{
public?static?function?doing()?{
//初始化女生
for($i=0;?$i<20;?$i++){
$listGirls[]?=?new?Girl();
}
$teacher=?new?Teacher();
//老師發(fā)布命令
$teacher?->?commond(new?GroupLeader($listGirls));
}
}
Client?::?doing();
一個對象應該對其他對象了解最少。
迪米特法則的核心就是降低類鍵的耦合,從而提高類的復用性。
具體體現(xiàn):
①?在類的劃分上,應該創(chuàng)建有弱耦合的類;
②?在類的結構設計上,每一個類都應當盡量降低成員的訪問權限;
③?在類的設計上,只要有可能,一個類應當設計成不變類;
④?在對其他類的引用上,一個對象對其它對象的引用應當降到最低;
⑤?盡量降低類的訪問權限;
⑥?謹慎使用序列化功能(類或接口在客戶端變更,卻未在服務端同步更新,引發(fā)序列化失敗,,項目管理易疏忽);
⑦?不要暴露類成員,而應該提供相應的訪問器(屬性)。
迪米特法則主要運用在觀察者模式和中介者模式中
迪米特法則的缺點:
1、遵循類之間的迪米特法則會使一個系統(tǒng)的局部設計簡化,因為每個局部都不會與遠距離的對象有直接的關聯(lián);但也會造成不同模塊之間的通信效率降低,會使系統(tǒng)的不同模塊之間不容易協(xié)調。
2、在系統(tǒng)中造出大量的小方法,散落在系統(tǒng)的各個角落。這些方法僅傳遞間接的調用,與系統(tǒng)的商務邏輯無關。
總結
以上是生活随笔為你收集整理的python设计模式六大原则_php设计模式的六大原则(六):迪米特法则的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python将第一列替换_python-
- 下一篇: 电信充q币短信怎么发_王者荣耀充值中心Q