物件導向的設計原則之 迪公尺特法則

2021-10-01 02:10:07 字數 1812 閱讀 7917

迪公尺特法則最初是用來作為物件導向的系統設計風格的一種法則,於2023年秋天由lan holland在美國東北大學為乙個叫做迪公尺特的專案設計提出的;

迪公尺特法則(law of demeter )又叫做最少知識原則,也就是說,乙個物件應當對其他物件盡可能少的了解。不和陌生人說話。英文簡寫為: lod;

舉個例子,和陌生人說話,甲和朋友認識,朋友和陌生人認識,而甲和陌生人不認識,這時甲可以直接和朋友說話,朋友可以直接和陌生人說話,而如果甲想和陌生人說話,就必須通過朋友;

public class jia

public void play(stranger stranger)

}

//朋友

public class friend

}

//陌生人

public class stranger

}

這種方式是肯定不對的,甲根本沒有通過朋友,直接引用了陌生人的方法,不符合迪公尺特法則;

//甲

2 public class jia

8 }

//朋友

public class friend

public stranger getstranger()

}

//陌生人

public class stranger

}

這樣的方式呢,看上去陌生人的例項是通過朋友來建立了,但還是不行,因為甲中包含的陌生人的引用,甲還是和陌生人直接關聯上了,所以,不符合迪公尺特法則,我們要的是甲和陌生人沒有一丁點直接關係:

//甲

public class jia

public void setfriend(friend friend)

public void play(friend friend)

}

//朋友

public class friend

public void playwithstranger()

}

1 public class stranger 

5 }

這種方式,甲和陌生人之間就沒有了任何直接聯絡,這樣就避免了甲和陌生人的耦合度過高;

當然還有一種更好的方式,與依賴倒轉原則結合,為陌生人建立乙個介面:

//甲

public class jia

public void setstranger(stranger stranger)

public friend getfriend()

public void setfriend(friend friend)

public void play()

}

1 public class friend 

5 }

1 //陌生人抽象類

2 public abstract class stranger

//具體陌生人

public class strangera extends stranger

}

這樣的方式,和甲直接通訊的是陌生人的抽象父類,和具體陌生人沒有直接關係,所以符合迪公尺特法則;

設計模式中的外觀模式中介模式就是迪公尺特法則的實現

物件導向設計原則之迪公尺特法則

迪公尺特法則來自於1987年美國東北大學 northeastern university 乙個名為 demeter 的研究專案。迪公尺特法則又稱為最少知識原則 leastknowledge principle,lkp 其定義如下 迪公尺特法則 law of demeter,lod 乙個軟體實體應當盡...

物件導向設計原則之迪公尺特法則

迪公尺特法則來自於1987年美國東北大學 northeastern university 乙個名為 demeter 的研究專案。迪公尺特法則又稱為最少知識原則 leastknowledge principle,lkp 其定義如下 迪公尺特法則 law of demeter,lod 乙個軟體實體應當盡...

物件導向設計原則之迪公尺特法則

迪公尺特法則來自於1987年美國東北大學 northeastern university 乙個名為 demeter 的研究專案。迪公尺特法則又稱為最少知識原則 leastknowledge principle,lkp 其定義如下 迪公尺特法則 law of demeter,lod 乙個軟體實體應當盡...