java example for strategy pattern:
如果我们有一个新的客户类型,如MemberCustomer,谁也可以被指控忠诚度积分,他有。正常或愉快时间的计费策略可能会发生以下变化:
NormalStrategyForMemberCustomer{
double getActPrice(double rawPrice, int loyaltyPoints){
return Math.max(rawPrice - loyaltyPoints, 0);
}
}
HappyHoursStrategyForMemberCustomer{
double getActPrice(double rawPrice, int loyaltyPoints){
return Math.max(rawPrice*0.5 - loyaltyPoints, 0);
}
}在这种情况下,我是否应该将上面的方法创建为新的策略,并从客户类继承一个新的类作为MemberCustomer,并尝试适应这种策略模式?
还是有另一种更适合这里的设计模式?
此外,我知道向下移动的逻辑减去rawPrice的忠诚度点可以向下移动到最后的创建帐单步骤,但我这样做是为了使它类似于我的工作场所的问题。
发布于 2018-03-19 04:54:50
我会尝试使用类型。如果我误解了这个问题,请纠正我.
private class Customer
{
Strategy<StrategyParam> s;
}
private class MemberCustomer
{
Strategy<LoyaltyStrategyParam> s;
}
private interface Strategy<T extends StrategyParam>
{
double getActAmount(T param);
}
private class StrategyParam {
double rawPrice;
}
private class LoyaltyStrategyParam extends StrategyParam {
int loyaltyPoints;
}
private class MemberStrategy implements Strategy<StrategyParam>
{
double getActAmount(StrategyParam param);
}
private class HappyHourMemberStrategy implements Strategy<LoyaltyStrategyParam>
{
double getActAmount(LoyaltyStrategyParam param);
}https://stackoverflow.com/questions/49295702
复制相似问题