什麼是策略模式?常用設計模式-策略模式
場景
假設有乙個支付的業務場景,不同**的訂單要做不同的處理~下面是普通的寫法:talk is cheap, show me the code@override
public string order(order order) else if (order.getsource().equals(ordersourceenum.wechat.getcode())) else if (order.getsource().equals(ordersourceenum.cup.getcode()))
return result;
}
ordersourceenum
/**
* @author l'amour solitaire
* @description 訂單**列舉
* @date 2020/12/15 下午4:04
**/@getter
@allargsconstructor
public enum ordersourceenum
ordersource
/**
* @author l'amour solitaire
* @description 訂單**註解
* @date 2020/12/15 下午4:01
**/@documented
@service
@target(elementtype.type)
@retention(retentionpolicy.runtime)
public @inte***ce ordersource
order
/**
* @author l'amour solitaire
* @description 訂單
* @date 2020/12/15 下午3:51
**/@data
@accessors(chain = true)
public class order implements serializable
orderpayhandleservice
/**
* @author l'amour solitaire
* @description 訂單業務處理
* @date 2020/12/15 下午3:53
**/public inte***ce orderpayhandleservice
alibabaorderserviceimpl
/**
* @author l'amour solitaire
* @description 模擬支付寶業務處理
* @date 2020/12/15 下午4:10
**/@ordersource(ordersourceenum.alibaba)
public class alibabaorderserviceimpl implements orderpayhandleservice
}
wechatorderserviceimpl
/**
* @author l'amour solitaire
* @date 2020/12/15 下午4:10
**/@ordersource(ordersourceenum.wechat)
public class wechatorderserviceimpl implements orderpayhandleservice
}
cuporderserviceimpl
/**
* @author l'amour solitaire
* @description 模擬銀聯業務處理
* @date 2020/12/15 下午4:10
**/@ordersource(ordersourceenum.cup)
public class cuporderserviceimpl implements orderpayhandleservice
}
orderserviceimpl
@service
public class orderserviceimpl implements orderservice
@override
public string order(order order) else if (order.getsource().equals(ordersourceenum.wechat.getcode())) else if (order.getsource().equals(ordersourceenum.cup.getcode()))
return result;
}@override
public string handlewithstrategy(order order)
}
ordercontroller
/**
* @author l'amour solitaire
* @description 模擬訂單處理
* @date 2020/12/15 下午3:55
常用設計模式 策略模式
定義 定義一組演算法,將每個演算法都封裝起來,並且使他們之間可以互換 既然需要演算法,那麼我們就來定義一組演算法,想一想,支付的演算法是什麼,當時就是判斷餘額,進行支付 當然真實環境中還有支付通知等 按照這樣的邏輯我們先定義乙個支付抽象類 public abstract class pay retu...
策略模式實戰
在專案中可能遇到這樣的情況,我們要收集專案中的所有資訊,而每種資訊的收集方法是不一樣的,我就遇到了這樣的情況。起初我用的是直接收集合併,在二個時就已經很費力了,這次是把所有的資訊 有11處之多 收集起來。我想到了策略模式的意圖,把策略選擇邏輯和策略執行邏輯分開。所以我就把4種選擇方法分別做成了四種策...
策略模式實戰
把各種策略解耦 返獎策略介面 public inte ce rewardstrategy 新使用者返獎策略 public class newuserrewardstrategy implements rewardstrategy 老使用者返獎策略 public class olduserreward...