-
1 # 搬磚程式設計師
-
2 # 程式你好
一般方法的引數很有可能會發生變化,有可能會增加一個或幾個引數,這樣方法就會不停的改,相應的,程式中所有呼叫這個方法的程式碼也必須跟著修改。如果這個方法在很多地方都被呼叫,那麼修改這些程式碼真是個繁瑣的工作。
用介面或抽象類的好處就是,即使增加或減少幾個引數,這個介面或抽象類不用去修改,這樣這個方法的簽名不會發生變化,所以程式中呼叫此方法的程式碼也不用修改。只修改這個介面或抽象類的實現的類即可。
比如說查詢某個使用者的訂單:
我們宣告這樣一個方法
List<Order> GetOrders(string userId)
{
。。。。。
}
呼叫的程式碼可能是這樣:
string userId = "1111"
var orders = ***.GetOrders(userId);
.....
假如現在需求是透過使用者的名字或地址查詢訂單,則需要修改方法:
List<Order> GetOrders(string userId,string userName,string address)
相應的呼叫程式碼也必須修改成:var orders = ***.GetOrders(userId,userName,address);
如果我們開始方法定義成:
List<Order> GetOrders(IUser user)
{
。。。。。
}
呼叫的程式碼應該是這樣:
IUser user = GetCurrentUser()
var orders = ***.GetOrders(user);
對IUser介面,可實現不同的User類,比如GuessUser,AdminUser,NormalUser等。
使用的程式碼幾乎不用改。
IUser user = GetGuessUser()//GetAdminUser()等等
var orders = ***.GetOrders(user);
。
上面那句話說的應該就是這個意思了。
回覆列表
在做web開發和程式設計的過程中,我經常會遇到一個問題,就是更改引數,開始的時候,我經常就在一個方法或者函式中直接將這個引數給傳進去。
但是,一到要更改引數的時候,我就很煩,總要替換啥的,於是乎,慢慢的就習慣建一個配置檔案的習慣了,我們需要去用到的直接在配置檔案裡面取就行,修改也很方便。
在做web開發的時候,見的比較多的要修改路由的情況,其實,跟上面的類似。不過python裡面的解決方法略有區別。