开发设计模式(三)策略模式(Strategy Pattern)

转自http://blog.sina.com.cn/s/blog_89d90b7c01017zrr.html

下面的环境是unity3d,用C#进行编码,当然有人会说这是在乱用模式,U3D不一定适合使用这些,其实不然,设计模式是前人总结的编程思想,语言只是工具,根据项目需求使用合理的设计方案就是最好设计模式的体现

开发设计模式(三)策略模式(Strategy Pattern)_第1张图片

 

// 首先定一个策略接口,这是诸葛亮老人家给赵云的三个锦囊妙计的接口 // interface IStrategy { void Operate(); } // 走后门,找乔国老帮忙,使孙权不能杀刘备 // class BackDoor : IStrategy { public void Operate() { Debug.Log("找乔国老帮忙,让吴国太给孙权施加压力"); } } // 求吴国太开个绿灯 // class GivenGreenLight : IStrategy { public void Operate() { Debug.Log("求吴国太开个绿灯,放行!"); } } // 孙夫人断后,挡住追兵 // class BlockEnemy : IStrategy { public void Operate() { Debug.Log("孙夫人断后,挡住追兵"); } } // 好了,大家看看,三个妙计是有了,那需要有个地方放这些妙计呀,放锦囊呀: // class Context { private IStrategy straegy; public Context(IStrategy strategy) { this.straegy = strategy; } public void Operate() { this.straegy.Operate(); } } public class Strategy : MonoBehaviour { private Context context; void Start () { Debug.Log("刚刚到吴国的时候拆第一个"); context = new Context(new BackDoor()); context.Operate(); Debug.Log("刘备乐不思蜀了,拆第二个了"); context = new Context(new GivenGreenLight()); context.Operate(); Debug.Log("孙权的小兵追了,咋办?拆第三个"); context = new Context(new BlockEnemy()); context.Operate(); } }

 

 

 

你可能感兴趣的:(strategy)