個(gè)人原文:
迪米特法則(手機(jī)上看電子書)
站在用戶的角度思考問題,與客戶深入溝通,找到天津網(wǎng)站設(shè)計(jì)與天津網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶體驗(yàn)好的作品,建站類型包括:網(wǎng)站建設(shè)、成都網(wǎng)站制作、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、主機(jī)域名、網(wǎng)絡(luò)空間、企業(yè)郵箱。業(yè)務(wù)覆蓋天津地區(qū)。
設(shè)計(jì)模式六大原則之五:迪米特法則。
姓名:迪米特法則
英文名:Law of Demeter
小名:最少知識(shí)原則
小名英文名:Least Knowledge Principle
價(jià)值觀:媽媽說不和陌生人說話
個(gè)人介紹:
還是腦洞大開來個(gè)小故事。這故事還是比較現(xiàn)實(shí)一些,其實(shí)也不算是故事,就是咱們經(jīng)常經(jīng)歷的事情,現(xiàn)在知識(shí)付費(fèi)已經(jīng)廣受歡迎,18 年底更是快速猛漲,各種各樣的培訓(xùn)、讀書、音頻學(xué)習(xí)軟件如雨后春筍一般涌現(xiàn)出來。我們就拿一個(gè)讀書的例子。
有一天,設(shè)計(jì)模式老師講解了迪米特法則,同學(xué)們聽得云里霧里的,老師怕同學(xué)們沒掌握這個(gè)知識(shí)點(diǎn),就給同學(xué)們布置了一個(gè)作業(yè),需要同學(xué)們按迪米特法則實(shí)現(xiàn)。
作業(yè)是這樣子的:平常在零碎的時(shí)間里,喜歡看一些書籍,一般都是電子書,現(xiàn)在我們看書的操作是這樣的:喚醒手機(jī),打開閱讀軟件,選擇書籍,然后閱讀??偣?3 個(gè)步驟,涉及了 3 樣?xùn)|西:手機(jī)、軟件、書籍。同學(xué)們用代碼實(shí)現(xiàn)這個(gè)過程。
第二天上課,同學(xué)們紛紛交了作業(yè),老師隨手一番,就看到了 2 個(gè)鮮明的例子,很明顯,就是一好一壞。老師便給同學(xué)們講解了這 2 個(gè)例子,讓學(xué)生感受一番迪米特法則。
public class LODErrorTest {
public static void main(String[] args) {
Phone phone = new Phone();
phone.readBook();
}
}
/**
* 錯(cuò)誤的示范
*/
class Phone {
App app = new App();
Book book = new Book("設(shè)計(jì)模式");
public void readBook() {
app.read(book);
}
}
class App {
public void read(Book book) {
System.out.println(book.getTitle());
}
}
class Book {
private String title;
public Book(String title) {
this.title = title;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
}
代碼:
LODErrorTest
代碼是完成了讀書這個(gè)過程,看樣子是功能實(shí)現(xiàn)了,細(xì)看會(huì)發(fā)現(xiàn)代碼的邏輯不對。哪里不對呢?書籍和應(yīng)用對象都在手機(jī)上,現(xiàn)實(shí)是我們喚醒手機(jī),這時(shí)手機(jī)是沒有書籍的,只有當(dāng)我們打開閱讀軟件,才有書籍可以看,沒有閱讀軟件,書籍是看不了的。因此,手機(jī)和書籍沒有一毛錢關(guān)系,書籍不應(yīng)該在手機(jī)里面。正常的設(shè)計(jì)是:手機(jī)里面有閱讀軟件,閱讀軟件里面有書籍,這才符合迪米特法則,按定義來說:手機(jī)和閱讀軟件是朋友,閱讀軟件和書籍是朋友,可是朋友的朋友不是朋友,也就是手機(jī)和書籍不是朋友,所以它們不應(yīng)該有交集,應(yīng)該離得遠(yuǎn)遠(yuǎn)的。
思考一下現(xiàn)實(shí):工作中如果缺少代碼復(fù)核這個(gè)步驟,就會(huì)出現(xiàn)這樣子,后果是怎么樣呢?會(huì)給后人挖坑,而且是大坑,因?yàn)楹同F(xiàn)實(shí)中的邏輯是對不上的,況且后人不知道當(dāng)時(shí)的業(yè)務(wù)背景,只能看代碼去熟悉,就會(huì)一步錯(cuò)、步步錯(cuò),所以要好好把控代碼質(zhì)量這一關(guān),因?yàn)榇a千人千面,沒法要求代碼風(fēng)格全部一致,但至少需要實(shí)現(xiàn)邏輯是清晰易懂的。
public class LODRightTest {
public static void main(String[] args) {
Phone2 phone2 = new Phone2();
phone2.readBook();
}
}
/**
* 正確的示范
*/
class Phone2 {
private App2 app2 = new App2();
public void readBook() {
app2.read();
}
}
class App2 {
private Book2 book2 = new Book2("設(shè)計(jì)模式");
public void read() {
System.out.println(book2.getTitle());
}
}
class Book2 {
private String title;
public Book2(String title) {
this.title = title;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
}
代碼:
LODRightTest
這段代碼就符合迪米特法則,手機(jī)中有閱讀軟件,閱讀軟件中有書籍,手機(jī)沒有書籍任何影子。正確代碼不用細(xì)講,用心去感受就可以體會(huì)到。
迪米特法則主要講述的觀點(diǎn)是高內(nèi)聚、低耦合。我理解為:是你的,就別給別人;不是你的,就別拿。上面定義的朋友也是這個(gè)意思。
寫到這,第五個(gè)原則了,六大原則就剩下最后一個(gè)開閉原則,湊齊 6 把大刀就可以準(zhǔn)備去大干 23 個(gè)大漢啦。。。想想都激動(dòng)。
希望文章對您有所幫助,設(shè)計(jì)模式系列會(huì)持續(xù)更新,感興趣的同學(xué)可以關(guān)注公眾號,第一時(shí)間獲取文章推送閱讀,也可以一起交流,交個(gè)朋友。
網(wǎng)站標(biāo)題:迪米特法則
URL地址:http://m.newbst.com/article4/jegeie.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站策劃、面包屑導(dǎo)航、品牌網(wǎng)站建設(shè)、網(wǎng)站排名、、服務(wù)器托管
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)