[心得整理] c# 物件導向程式 - 6.LKP 最少知識原則

[心得整理] c# 物件導向程式 - 6.LKP 最少知識原則

前言

今天要介紹LKP 最少知識原則(LoD 狄米特法則)
要把三大特性的封裝,加點料

最少知識原則 - 現實生活面

到餐廳用餐,我們只會面對服務生點餐,等待上菜
假設跟服務生點餐後還要跑去廚房說要做哪些菜
等做好菜再請服務生端上,這些事情都要客人來做的話(這餐廳應該倒了吧)
所以點餐後的流程,我們並不知道 就是最少知識原則

最少知識原則 - 程式面

已經成形的操作流程就封裝起來
一個物件應該對其他物件有最少的瞭解

用個會員系統來比喻好了,登入流程是
1.檢查帳號密碼,2.檢查是否認證,3.檢查登入IP,4.最後判斷是否為VIP
是必須要按照先後順序檢查
A.我們可以提供四個方法然後跟要用的人說請依序呼叫不能顛倒喔
B.我們應該提供一個登入方法就好,然後把登入事情都封裝在這流程裡
是不是B比較好用呢,因為B遵守了最少知識原則 
這樣別人在使用也方便對吧
就算以後登入要多加功能,就知道在加入登入的方法裡面

對我來說 
LKP 最少知識原則,站在使用者的角度如何提供好用的服務(方法)
而不是把所有功能都公開,讓使用端想怎樣呼叫都可以(bug往往這樣產生)

結語

封裝的好,大家使用都方便,是要好好想清楚,才開始寫code

推薦閱讀

[ASP.NET]91之ASP.NET由淺入深 不負責講座 Day19- LoD/LKP 最少知識原則

OOP學習筆記 - SOLID的(最少知識原則LKP) / 迪米特法則(LoD)

如果內容有誤請多鞭策謝謝