比如,第一版的代碼為://購買商品apipublic function buyGoods(){ //參數(shù)驗證
$validate->validateParam(); //購買邏輯
$goods->buy();
}這時候,第一版已經(jīng)穩(wěn)定運行了,我們希望不再過多修改這個成員方法,但第二版的需求來了,那就是要在這個函數(shù)處理完之后再加入一些處理函數(shù),比如第二版的代碼為: //購買商品api
public function buyGoods(){ //參數(shù)驗證
$validate->validateParam(); //購買邏輯
$goods->buy(); //用戶積分明細錄入
$user->credit(); //用戶資金明細錄入
$user->money();
...等等n個新加函數(shù)
}這個credit()和money()等是后加入了的,如果想加入這些函數(shù)就必須修改buyGoods(),這樣就破壞了原來的buyGoods()。有沒有一種設計模式,可以讓成員方法能在不改變原有代碼的前提下輕易擴展?
1 回答

蝴蝶不菲
TA貢獻1810條經(jīng)驗 獲得超4個贊
如果不依賴調(diào)用的話,可以用mq方式解耦。buyGoods中做生產(chǎn)者,往mq里丟數(shù)據(jù)就行了。消費者自己去做消費。
添加回答
舉報
0/150
提交
取消