迪公尺特法則學習筆記

2021-07-09 11:57:55 字數 1291 閱讀 7796

迪公尺特法則是設計模式所需要遵循的法則之一

所謂的迪公尺特法則:

定義如下:乙個物件應該對其他物件保持最少的了解,類與類之間的關係越密切,耦合度越大,當乙個類發生改變的時候。對另外乙個類的影響也越大。所以應該盡量降低類與類之間的耦合度

迪公尺特法則又叫做最少知道原則,指的是乙個類對自己依賴的類知道的越少越好,迪公尺特法則還有乙個更加簡單的定義:只和直接的朋友通訊,

直接的朋友:每個物件都會與其他物件有耦合關係,只要兩個物件之間有耦合關係,我們就說這兩個物件是朋友關係。耦合的方式很多,依賴,關聯,組合,聚合等等。其中,我麼稱出現成員變數,方法引數,方法返回值中的類為直接的朋友,而出現在區域性變數中的類則不是直接的朋友,也就是還說,陌生的類最好不要作為區域性變數的形式出現在類的內部

下面是違反迪公尺特法則的**例項:

class teacher 

//告訴體育委員開始執行清查任務

$groupleader -> countgirls($listgirls);

}} class groupleader }

class girl

class client }

client :: doing();

**完美執行:下面是執行結果

但是這段**是違反迪公尺特法則的,為什麼這麼說呢,迪公尺特法則:只和直接的朋友類通訊。我們看teacher類,他的直接的朋友其實只有乙個groupleader類,這個類出現在teacher類的方法引數上(另外兩種方式是出現在成員變數或者返回值上)。所以按照迪公尺特法則的規定teacher類只能與groupleader類進行通訊,但是在commond方法中,居然使用了girl類。girl類不是teacher類的直接朋友。

我們來看優化後的**,作者把使用girl類的部分**挪移到了場景客戶端。

<?php

header("content-type:text/html;charset=utf8");

class teacher }

class groupleader

//有清查女生的工作

public function countgirls() }

class girl

class client

$teacher= new teacher();

//老師發布命令

$teacher -> commond(new groupleader($listgirls));

}} client :: doing();

?>

這樣就符合迪公尺特法則了。

迪公尺特法則筆記

public class course boss類 public class boss teamleader.checknumberofcourses courselist teamleader類 public class teamleader test測試類 public class test 這...

迪公尺特法則

定義 乙個物件應該對其他物件保持最少的了解。問題由來 類與類之間的關係越密切,耦合度越大,當乙個類發生改變時,對另乙個類的影響也越大。解決方案 盡量降低類與類之間的耦合。自從我們接觸程式設計開始,就知道了軟體程式設計的總的原則 低耦合,高內聚。無論是面向過程程式設計還是物件導向程式設計,只有使各個模...

迪公尺特法則

自從我們接觸程式設計開始,就知道了軟體程式設計的總的原則 低耦合,高內聚。無論是面向過程程式設計還是物件導向程式設計,只有使各個模組之間的耦合盡量的低,才能提高 的復用率。怎麼樣程式設計才能做到低耦合呢?那正是迪公尺特法則要去完成的。類與類之間的關係越密切,耦合度越大,當乙個類發生改變時,對另乙個類...