策略模式(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