更新時(shí)間:2021年08月19日16時(shí)08分 來(lái)源:傳智教育 瀏覽次數(shù):
在軟件開(kāi)發(fā)中,為了提高軟件系統(tǒng)的可維護(hù)性和可復(fù)用性,增加軟件的可擴(kuò)展性和靈活性,程序員要盡量根據(jù)6條原則來(lái)開(kāi)發(fā)程序,從而提高軟件開(kāi)發(fā)效率、節(jié)約軟件開(kāi)發(fā)成本和維護(hù)成本。這六條分別是開(kāi)閉原則、里氏代換原則、依賴(lài)倒轉(zhuǎn)原則、接口隔離原則、迪米特法則、合成復(fù)用原則,下面主要介紹里迪米特法則。
迪米特法則又叫最少知識(shí)原則。
只和你的直接朋友交談,不跟“陌生人”說(shuō)話(Talk only to your immediate friends and not to strangers)。
其含義是:如果兩個(gè)軟件實(shí)體無(wú)須直接通信,那么就不應(yīng)當(dāng)發(fā)生直接的相互調(diào)用,可以通過(guò)第三方轉(zhuǎn)發(fā)該調(diào)用。其目的是降低類(lèi)之間的耦合度,提高模塊的相對(duì)獨(dú)立性。
迪米特法則中的“朋友”是指:當(dāng)前對(duì)象本身、當(dāng)前對(duì)象的成員對(duì)象、當(dāng)前對(duì)象所創(chuàng)建的對(duì)象、當(dāng)前對(duì)象的方法參數(shù)等,這些對(duì)象同當(dāng)前對(duì)象存在關(guān)聯(lián)、聚合或組合關(guān)系,可以直接訪問(wèn)這些對(duì)象的方法。
下面看一個(gè)例子來(lái)理解迪米特法則
【例】明星與經(jīng)紀(jì)人的關(guān)系實(shí)例
明星由于全身心投入藝術(shù),所以許多日常事務(wù)由經(jīng)紀(jì)人負(fù)責(zé)處理,如和粉絲的見(jiàn)面會(huì),和媒體公司的業(yè)務(wù)洽淡等。這里的經(jīng)紀(jì)人是明星的朋友,而粉絲和媒體公司是陌生人,所以適合使用迪米特法則。
類(lèi)圖如下:
代碼如下:
明星類(lèi)(Star)
public class Star { private String name; public Star(String name) { this.name=name; } public String getName() { return name; } }
粉絲類(lèi)(Fans)
public class Fans { private String name; public Fans(String name) { this.name=name; } public String getName() { return name; } }
媒體公司類(lèi)(Company)
public class Company { private String name; public Company(String name) { this.name=name; } public String getName() { return name; } }
經(jīng)紀(jì)人類(lèi)(Agent)
public class Agent { private Star star; private Fans fans; private Company company; public void setStar(Star star) { this.star = star; } public void setFans(Fans fans) { this.fans = fans; } public void setCompany(Company company) { this.company = company; } public void meeting() { System.out.println(fans.getName() + "與明星" + star.getName() + "見(jiàn)面了。"); } public void business() { System.out.println(company.getName() + "與明星" + star.getName() + "洽淡業(yè)務(wù)。"); } }
猜你喜歡:
軟件設(shè)計(jì)模式分類(lèi)有哪些分類(lèi)?
北京校區(qū)