Strategy策略模式是属于设计模式中对象行为型模式,主要是定义一系列的算法,把这些算法一个个封装成单独的类.
它的UML图

Strategy是一个策略类,其中定义一个或多个算法接口
ConcreteStrategy是实现算法接口的具体策略类
Context是上下文应用
比如,我要从龙阳路去浦东国际机场,我可以选择坐公交、可以选择打车、可以选择坐磁悬浮。 实现该接口(算法)的具体类 public void ToDo() #endregion public void ToDo() #endregion public class ByTrain : IToAerodrome public void ToDo() #endregion /// <summary> /// <summary> context
这里的乘车方式就是一个可变的,因此独立为一接口
如策略接口
public interface IToAerodrome
{
void ToDo();
}
public class ByBus : IToAerodrome
{
#region IToAerodrome 成员
{
Console.WriteLine("乘坐公交车去机场");
}
}
public class ByTaxi : IToAerodrome
{
#region IToAerodrome 成员
{
Console.WriteLine("我乘坐出租车去机场");
}
}
{
#region IToAerodrome 成员
{
Console.WriteLine("坐每小时200公里的磁悬浮");
}
}
public class ToAerodromeStrategy
{
IToAerodrome _ToAerodrome;
/// <summary>
/// 构造函数,以实现IToAerodrome的类实体为参数
/// </summary>
/// <param name="toAerodrome"></param>
public ToAerodromeStrategy(IToAerodrome toAerodrome)
{
_ToAerodrome = toAerodrome;
}
/// 改变当前的策略
/// </summary>
/// <param name="toAerodrome"></param>
public void ChangeStrategy(IToAerodrome toAerodrome)
{
_ToAerodrome = toAerodrome;
}
/// 执行方法
/// </summary>
public void Go()
{
_ToAerodrome.ToDo();
}
}
static void Main(string[] args)
{
ToAerodromeStrategy to = new ToAerodromeStrategy(new ByBus());
to.Go();
Console.WriteLine("我要改坐磁悬浮");
to.ChangeStrategy(new ByTrain());
to.Go();
Console.Read();
}

看不懂….不过今天又问题要问:
幻想曲 我很菜
我现在想知道.NET 的优势 和asp 比 安全?? php呢??
另外:幻想曲的工作是??? 程序,能不能具体点? 网站系统?erp? 嵌入式软件? 什么呢??
asp单一脚本语言,asp.net可用C#、VB、VC等多种语言
asp解释执行,asp.net编译执行
asp面向过程,asp.net面向对象
asp无自己的类库,asp.net有自己庞大的类库
asp无专用IDE,asp.net有VS.NET(据说是最好的IDE)
……^_^
都说.net 好,我手上这个网站却是非常地差,功能方面让我郁闷到家。
要不是不懂得如何处理更换后的路径问题,早就要换了程序去。
不过幻想曲这个博客的程序还是很不错的,:up: