最近踢了場(chǎng)球,9人制比賽,上半場(chǎng)我們采用防守陣型效果不佳,下半場(chǎng)采用進(jìn)攻陣型取得了比賽的主動(dòng)。我們上下半場(chǎng)所采取的策略,似乎可以用"裝飾器"模式實(shí)現(xiàn)一遍。
首先肯定是抽象基類。
public abstract class OurStrategy{public abstract void Play(string msg);}
通常,在上半場(chǎng),我們一般都使用防守陣型。
public class OurDefaultStategy : OurStrategy{public override void Play(string msg){Console.WriteLine("上半場(chǎng)4-1-2-1防守陣型");}}
下半場(chǎng),會(huì)根據(jù)上半場(chǎng)的態(tài)勢(shì)而調(diào)整陣型。也就是需要實(shí)現(xiàn)OurStrategy這個(gè)抽象類。不過,先不急,我們還得先抽象出一個(gè)實(shí)現(xiàn)OurStrategy這個(gè)抽象類、充當(dāng)裝飾器的一個(gè)抽象類。
public abstract class OurDecorator : OurStrategy{PRivate OurStrategy _ourStrategy;public OurDecorator(OurStrategy ourStrategy){this._ourStrategy = ourStrategy;}public override void Play(string msg){if (_ourStrategy != null){_ourStrategy.Play(msg);}}}
以上,這個(gè)充當(dāng)裝飾器的抽象類,接收某個(gè)實(shí)現(xiàn)OurStrategy抽象基類的子類實(shí)例,并執(zhí)行OurStrategy抽象基類的方法Play。
接下來,實(shí)現(xiàn)OurDecorator這個(gè)充當(dāng)裝飾器的類。
public class AttackStategy : OurDecorator{public AttackStategy(OurStrategy ourStrategy) : base(ourStrategy){}public override void Play(string msg){base.Play(msg);
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注