設計模式之golang實現策略

2021-08-15 04:57:07 字數 906 閱讀 9446

package strategy

type cashcal inte***ce

type deal struct{}

type normaldeal struct

func (nd *normaldeal) cashcal(price float64) float64

type rebatedeal struct

func (rd *rebatedeal) setrebate(rebate float64)

func (rd *rebatedeal) cashcal(price float64) float64

type returndeal struct

func (rd *returndeal) setup(up float64)

func (rd *returndeal) setret(ret float64)

func (rd *returndeal) cashcal(price float64) float64

return price

}type context struct

func (cxt *context) init(typ string)

}func (cxt *context) cal(price float64) float64

package strategy import "testing" func teststrategy(t *testing.t)  }
阿里雲雙十一雲伺服器拼團活動,已經打到最低價99元一年!有需要的可以考慮一波了!

分析:通過測試**可以發現,策略模式之對外暴露了乙個struct,更好的體現了封裝,降低了耦合。

《大話設計模式》java實現之策略模式

uml圖 結構為了方便 閱讀,只寫了折扣和滿x減y員的策略類 折扣類 public class cashrebate extends cashsuper override public double acceptcash double money public double getmoneyreba...

設計模式之策略模式 多種實現方式

策略模式作為一種軟體設計模式,指物件有某個行為,但是在不同的場景中,該行為有不同的實現演算法。比如每個人都要 交個人所得稅 但是 在美國交個人所得稅 和 在中國交個人所得稅 就有不同的算稅方法。主要是為了 的解耦,避免每次新增策略的時候都影響到之前的策略邏輯 開閉原則 降低 的耦合有利於後面 的延伸...

設計模式之策略模式的Python實現

1.策略模式解決的是什麼問題 策略模式解決的應用場景是這樣的 在業務場景中,需要用到多個演算法,並且每個演算法的引數是需要調整的。那麼當不同的行為堆砌到同乙個類中時,我們很難避免使用條件語句來選擇合適的行為。我們需要解決的是把演算法封裝起來,達到演算法的變化不會影響到使用演算法的客戶的效果。實際上就...