設計模式之五 策略模式

2021-09-08 17:09:31 字數 1431 閱讀 4589

原文:

設計模式之五(策略模式)

前言策略模式:它定義了演算法家族,分別封裝起來,讓它們之間可以相互替換,此模式讓演算法的變化,不會影響到使用演算法的客戶。

策略模式結構圖

strategy:策略類,定義所有支援的演算法的公共介面

concretestrategy1,concretestrategy2,concretestrategy3這三個是具體策略類,封裝了具體的演算法或行為,繼承於strategy

context上下文,用乙個concretestrategy來配置,維護乙個對strategy物件的引用。

**實現

簡單了解了一下,策略模式的定義和它的模式結構圖之後,我們現在通過**進行進一步的了解。

strategy類,定義所有支援的演算法的公共介面

public abstract

class

strategy

concretestrategy,封裝了具體的演算法或行為,繼承於strategy

public

class

concretestrategy1 : strategy

}public

class

concretestrategy2 : strategy

}public

class

concretestrategy3 : strategy

}

context,用乙個concretestrategy來配置,維護乙個對strategy物件的引用。

public

class

context

public

void

contextinte***ce()

}

客戶端呼叫**

class

program

}

執行效果展示

總結策略模式是一種定義一系列演算法的方法,從概念上來看,所有這些演算法完成的都是相同的工作,只是實現不同,它可以以相同的方式呼叫所有的演算法,減少了各種演算法類與使用演算法類之間的耦合。

策略模式的優點:

策略模式的strategy類層次為context定義了一系列可供重用的演算法或行為。繼承有助於析取出這些演算法的公共功能。

簡化了單元測試,因為每個演算法都有自己的類,可以通過自己的介面單獨測試。

總的來說,策略模式就是用來封裝演算法的,但在實踐中,我們發現可以用它來封裝幾乎任何型別的規則,只要在分析過程中聽到需要在不同時間應用不同的業務規則,就可以考慮使用策略模式處理這種變化的可能性。

設計模式《五》策略模式

設計模式概述見 它定義了演算法家族,分別封裝起來,讓它們之間可以互相替換,此模式讓演算法的變化,不會影響到使用演算法的客戶。意思就是演算法只是一種策略,而策略之間是可以相互替換的,替換之後也不會影響到使用這些演算法的客戶端。策略模式被運用在演算法的互換上,例如加減乘數是一系列的演算法,給定兩個數,對...

設計模式之策略模式

include using namespace std 飛行行為介面類 class flystrategy 高空飛行行為具現類 class heightfly public flystrategy virtual void fly private heightfly 低空飛行行為具現類 class ...

設計模式之 策略模式

策略模式 strategy pattern 定義了演算法家族,分別封裝起來,讓他們之間可以互相替換,此模式讓演算法的變化,不會影響到使用演算法的客戶。策略模式是一種定義了一系列演算法的方法,從概念上來看,所以得這些演算法完成的都是相同的工作,只是實現不同,它可以以相同的方式呼叫所有的演算法,減少了各...