zoukankan      html  css  js  c++  java
  • 开发设计模式(三)策略模式(Strategy Pattern)

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

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

    // 首先定一个策略接口,这是诸葛亮老人家给赵云的三个锦囊妙计的接口 //
    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();
     }
    }
  • 相关阅读:
    HttpWebRequest、HttpWebResponse简单Demo
    向虚拟机发短信(android SMS 调试)
    双系统时间相关8小时
    电脑开机报警声
    Windows Live Writer 代码插件
    配置Linux防火墙
    配置yum源方法,以及失效时的处理
    xp系统下硬盘安装centos6.5
    Android 四大组件 与 MVC 架构模式
    elasticsearch GIS空间查询问题解决
  • 原文地址:https://www.cnblogs.com/martianzone/p/3364688.html
Copyright © 2011-2022 走看看