舉個栗子;電商業務中,會員結算**時,需要根據會員等級,返給使用者不同的積分,或者滿多少打折,這個時候就可以使用策略模式來代替傳統的多層巢狀if
普通註冊使用者:不減
vip1:減2元
vip2:減4元
vip3:減6元
定義策略介面
public inte***ce strategy
vip0策略
@component(value = "strategyvipzero")
public class strategyvipzero implements strategy
}
vip1策略
@component(value = "strategyvipone")
public class strategyvipone implements strategy
}
vip2策略
@component(value = "strategyviptwo")
public class strategyviptwo implements strategy
}
vip3策略
@component(value = "strategyvipthree")
public class strategyvipthree implements strategy
}
定義策略工廠: strategyfactory
@component
/*** 定義乙個map,儲存等級和策略的關係
*/private mapstrategymap;
public strategyfactory()
public strategy getstrategy(integer level)
return ctx.getbean(s,strategy.class);
}@override
}}
簡單使用
strategy strategy = strategyfactory.getstrategy(member.getmemberlevel());
bigdecimal bigdecimal = strategy.paymoney(new bigdecimal(pay)).setscale(2, bigdecimal.round_half_up);
設計模式 工廠在收費系統中的應用
抽象工廠 abstract factory 提供乙個建立一系列相關或相互依賴物件的結構,而無需指定他們具體的類。抽象工廠uml圖 abstractproducta和abstractproductb是兩個抽象產品,它們可能是兩種不同的實現。在機房收費系統中可以理解為對兩個表的不同操作。而product...
策略模式的典型應用
做了乙個小東西,裡面有多個角色,每個角色都有特殊的選單項,現使用策略模式對其簡單實現。關於策略模式的介紹請參考其他書籍。下面是專案架構和實現 架構 實現 imenustrategy.cs using system using system.collections.generic using syst...
策略模式的典型應用
做了乙個小東西,裡面有多個角色,每個角色都有特殊的選單項,現使用策略模式對其簡單實現。關於策略模式的介紹請參考其他書籍。下面是專案架構和實現 架構 實現 imenustrategy.cs using system using system.collections.generic using syst...