策略模式簡單使用

2021-10-23 22:20:34 字數 1665 閱讀 1072

在設計賬戶系統的過程中遇到這樣乙個問題,就是當第三方賬戶需要根據第三方賬戶的型別來當前的使用者id和第三方的unionid進行乙個繫結操作。

如果一般的做法呢就是寫很多的if else通過判斷不同的賬戶型別,來決定進行哪種第三方繫結的操作。

下面是使用策略模式的做法,下面**演示,只需關注策略模式的流程和實現,語法上不必深究

首先定義乙個 策略介面

package com.third;

public inte***ce thirdinfointe***cestrategy

package com.third;

public class wechatuserinfostrategy implements thirdinfointe***cestrategy

}

可能有蘋果的方式

package com.third;

@override

public void updateuserinfo(string unionid, tbluserinfo userinfo)

}

可能有**的方式

package com.third;

public class taobaouserinfostrategy implements thirdinfointe***cestrategy

}

最後定義乙個上下文類,統一執行所有策略繫結操作

context類意義,使得策略的行為對外操作起來更為統一,注意策略模式是乙個行為行的設計模式,

關注點在執行行為的那個方法,而不用關心,具體的策略方法,

當然了我覺得如果策略的行為特別簡單,在決定要使用哪種策略的時候也可以直接用。

package com.third;

public class thirdinfobindcontext

// public void bind(string unionid,tbluserinfo userinfo)

}

// 簡單呼叫,版本一

public class client

}

// 通過反射獲取具體策略物件,版本二

public class client

}

// 配置檔案+反射呼叫,版本三

public class client

}

配置

key[0] = weixin

value[0] = com.third.wechatuserinfostrategy

.....

在版本三中實現了全流程**不改動,完全適應業務,當新的第三方登入方式增加時,只需要增加**的具體策略,和配置檔案中的型別和策略名稱即可。

這種做法可能在現如今這個jar包部署整個服務時候體現不出優勢,因為我們不能向正在執行的jar包中新增其他的.class檔案。

但在我接觸的c# 專案中,這種反射+配置的做法,好處卻時十分的明顯,當新加乙個功能時往往只需要在專案目錄中加乙個寫好的.dll檔案,

再將當前專案中的配置檔案新增相關配置,即可完成功能的新增,使用起來十分的方便。

策略模式簡單實現

設計模式目錄 狀態,職責鏈,策略對比分析 幾種模式的對比分析 幾種模式的對比分析 策略模式 就是有乙個策略類,他有乙個演算法函式 algorithminte ce 可多型。他可供context選擇 context呼叫他的演算法函式 algorithminte ce c include using n...

策略模式和簡單工廠模式

策略模式和簡單工廠模式有什麼不同額?最近在學習設計模式,遇到這兩種模式,有點兒迷糊?簡單工廠模式 public class operation return result private double numbera 0 public double numbera set private doubl...

簡單工廠模式和策略模式

兩種模式如出一轍,基本方式都是通過將相同的行為封裝在乙個抽象父類 或介面 中,然後子類繼承該抽象父類並對該相同的行為進行不同的實現。簡單工廠模式 目的在於根據不同的條件建立不同的子類,工廠類的作用就是建立類。策略模式 比簡單工廠模式多了乙個context類,該類中保持對乙個策略父類的引用。該模式對策...