設計模式-策略模式
wordsCount: 317
readingTime: 1 min
viewers:
Strategy-策略模式
分類
行為模式-Behavioral Patterns
主要角色
Strategy (策略介面)、Concrete Strategy (具體策略)、Context (環境/上下文)
目的
定義一系列演算法並將其封裝,讓演算法之間可以互相替換,使演算法的變化不影響使用者。
如何互動
Context 持有一個 Strategy 的引用,在執行期間可以根據選擇注入不同的 Concrete Strategy,並委託該策略執行具體的業務邏輯。
GitHub練習
https://github.com/hanksky12/DesignPatterns/blob/main/internal/strategy/strategy.go
實務上
在開發中,為測試機器人玩家如果採用不同的玩法,會如何對遊戲得分,把這些邏輯用if else分散在程式內,和其他主要互動步驟混在一起, 這時可把關於玩法策略的部分,抽象出來封裝,再用介面注入,從一開始就可以簡單的選擇單一策略後,決定整個機器人的互動方式,程式碼就乾淨很多
Table of Contents
Related Posts
設計模式-工廠模式
Factory -工廠模式 分類 建立模式-Creational Patterns 主要角色 Product (產品介面)、Concrete Product (具體產品
2026-4-12
設計模式-備忘錄模式
Memento-備忘錄模式 分類 行為模式-Behavioral Patterns 主要角色 Originator、Meme
2023-6-17
設計模式-樣板模式
Template Method-樣板模式 分類 行為模式-Behavioral Patterns 主要角色 Abstract Class、Concrete C
2023-6-17
MySQL和PostgreSQL交易快照比較
此篇討論Mysql和PostgreSQL的快照機制 MVCC (Multi-Version Concurrency Control) 多版本併發控制,核心在於使用版本來代替鎖來
2026-4-12
Mysql 的 Repeatable Read & 幻讀
此篇討論Mysql RR下,預設解決了哪些幻讀,哪些沒解決?如何處理剩下的幻讀問題 定義 快照讀 : select 當前讀
2026-4-12
Sponsor
Wechat
Alipay