常用設計模式 策略模式實戰

2021-10-12 04:21:08 字數 3235 閱讀 5047

什麼是策略模式?常用設計模式-策略模式

場景

假設有乙個支付的業務場景,不同**的訂單要做不同的處理~下面是普通的寫法:

@override

public string order(order order) else if (order.getsource().equals(ordersourceenum.wechat.getcode())) else if (order.getsource().equals(ordersourceenum.cup.getcode()))

return result;

}

talk is cheap, show me the code

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...