首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

我的 Design Pattern 之旅 [1]:Strategy Pattern (1) - 核心概念與 UML

     編輯:關於C語言

Strategy Pattern 核心意圖、UML 結構與演進動機完整解析

Abstract

Head First Design Patterns 與陳俊杉教授課程均以 Strategy 作為首個教學模式,適合初學者入門。

Intent

定義一族演算法,封裝每個演算法,使其可互換。演算法變化不影響使用演算法的客戶端。

UML 結構

Strategy Pattern UML
圖 1:Strategy Pattern UML 類別圖

別名與比喻

GoF 稱 Policy,筆者偏好稱 Plugin:動態換演算法如同 Eclipse 換 Plugin。

演進動機

初始單一類別
圖 2:初始 Grapher 僅能畫方形

需求變更:需支援三角形、圓形、未來橢圓、菱形...
若在 Grapher 不斷添加 drawTriangle()、drawCircle() 違反 OCP。

Strategy Pattern 重構後
圖 3:抽出 IShape 介面,Triangle/Circle/Square 實作

架構優勢驗證

  • 新增 Shape:Grapher、IShape、既有 Shape **皆無需修改** → Closed for Modification
  • 新增 Shape:只需實作 IShape → Open for Extension
  • .NET Framework、STL 大量使用 Strategy Pattern

本質總結

Strategy Pattern = 將會變動的成員函數用類別封裝,變成物件「掛」在原本類別上。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved