概述:
在策略模式(Strategy Pattern)中,一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为型模式。
三国演义中火烧赤壁前后孔明使用的策略(计谋)可谓是一个个精妙算法。
前情回顾:
曹操80万大军南征,取荆州,刘备败走新野,驻扎江夏。诸葛亮为抗曹而联吴,使用一系列策略,
策略A-舌战群雄:只身过江,江东名士群起发难,孔明舌战群雄。
策略B-草船借箭:后为破周瑜暗害,神算三日江面大雾弥漫,终而草船借箭。
策略C-火烧赤壁: 继而在隆冬之际,建坛祭风,借来东南大风,火烧赤壁。
策略模式解读:
通俗的判断条件做法:
if (江东名士发难)
策略A-舌战群雄
if (神算大雾弥漫)
策略B-草船借箭
if (建坛借风)
策略C-火烧赤壁
为提高扩展性,实现类的行为或其算法可以在运行时更改。
接口interface:策略strategy
public int doOperation(string 各种前提因素);
实现类class:策略A
public int doOperation(string 江东名士发难) { 舌战群雄 }
实现类class:策略B
public int doOperation(string 神算大雾弥漫) { 草船借箭}
实现类class:策略C-火烧赤壁
public int doOperation(string 建坛借风) { 火烧赤壁}
构建使用策略的类class:锦囊库
类class:锦囊库
{
成员变量:策略strategy;
public int executeStrategy(string 各种前提因素){ 策略strategy.doOperation( 各种前提因素));
}