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

来源:互联网 发布:关系数据库的基本概念 编辑:程序博客网 时间:2024/06/18 09:15

策略模式(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
原创粉丝点击