一般来说,当一个行动有多种实现要领,在实际使用时,需要按照差别情况选择某个要领执步履作,就可以考虑使用计谋模式。
把行动抽象成接口,好比把玩球抽象成接口。代码如下:
public interface IBall { void Play(); }
有可能是玩足球、篮球、排球等,把这些球类抽象成实现接口的类。分袂如下:
public class Football : IBall { public void Play() { Console.WriteLine("我喜欢足球"); } } public class Basketball : IBall { public void Play() { Console.WriteLine("我喜欢篮球"); } } public class Volleyball : IBall { public void Play() { Console.WriteLine("我喜欢排球"); } }
还有一个类专门用来选择哪种球类,并执行接口要领:
public class SportsMan { private IBall ball; public void SetHobby(IBall myBall) { ball = myBall; } public void StartPlay() { ball.Play(); } }
客户端需要让用户作出选择,按照差此外选择实例化具体类:
class Program { static void Main(string[] args) { IBall ball = null; SportsMan man = new SportsMan(); while (true) { Console.WriteLine("选择你喜欢的球类项目(1=足球, 2=篮球,,3=排球)"); string input = Console.ReadLine(); switch (input) { case "1": ball = new Football(); break; case "2": ball = new Basketball(); break; case "3": ball = new Volleyball(); break; } man.SetHobby(ball); man.StartPlay(); } } }
措施运行功效如下图所示: