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