策略模式(strategy)行为型模式c#简单例子

策略模式(strategy)行为型模式c#简单例子

例子主是运用策略模式分解几种移动算法。

namespace adapterpattern
{
    public partial class StrategyFrom : Form
    {
        public StrategyFrom()
        {
            InitializeComponent();
        }

        private void btnDisplay_Click(object sender, EventArgs e)
        {
            Context context1 = new Context(new LeftMove ());
            context1.moveMethod1();
            listBox1.Items.Add(moveData.moveString );
            context1.moveMethod2();
            listBox1.Items.Add(moveData .moveString );
            Context context2= new Context(new RightMove());//算法变动后
            context2.moveMethod1();
            listBox1.Items.Add(moveData.moveString);
            context2.moveMethod2();
            listBox1.Items.Add(moveData.moveString);
           
        }
    }
    public interface IProessMove//表达算法抽象(strategy)
    {
        void Process();
    }
    public class Context
    {
        IProessMove proessMove;//对象组合
        public Context(IProessMove proessMove)//策略模式的连接点
        {
            this.proessMove = proessMove;
        }
        public void moveMethod1()
        {
            proessMove.Process();
            moveData.moveString += "方法1;";
        }
        public void moveMethod2()
        {
           
            proessMove.Process();
            moveData.moveString += "方法2;";
        }
    }
    public class moveData//移动算法中用到数据
    {
        public static  string moveString { set; get; }
    }
    public class LeftMove : IProessMove//移动算法1
    {
          public void Process()
        {
        moveData . moveString = "左移动算法";
        }
    }
    public class RightMove : IProessMove//移动算法2
    {
        public void Process()
        {
           moveData.moveString  = "右移动算法";
        }
    }
    public class TopMove : IProessMove//移动算法3
    {
        public void Process()
        {
          moveData.moveString   = "向上移动算法";
        }
    }
 
}

此文件由朱朱编写,转载请注明出自朱朱家园http://blog.csdn.net/zhgl7688



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值