WEB开发网
开发学院软件开发C语言 C# Design Patterns (2) - Strategy 阅读

C# Design Patterns (2) - Strategy

 2009-06-22 08:33:04 来源:WEB开发网   
核心提示: 图 1这张为很多书籍和文档都曾出现过的 Strategy 经典 Class Diagram01_Shell.aspx.csusingSystem;usingcom.cnblogs.WizardWu.sample01;//客户程序publicpartialclass_01_Shell:Sys

C# Design Patterns (2) - Strategy

图 1 这张为很多书籍和文档都曾出现过的 Strategy 经典 Class Diagram

01_Shell.aspx.cs
using System;
using com.cnblogs.WizardWu.sample01;

//客户程序
public partial class _01_Shell : System.Web.UI.Page
{    
    protected void Page_Load(object sender, EventArgs e)
    {
        //执行对象
        Context context;

        context = new Context(new ConcreteStrategyA());
        Response.Write(context.ContextInterface() + "<br>");

        context = new Context(new ConcreteStrategyB());
        Response.Write(context.ContextInterface() + "<br>");

        context = new Context(new ConcreteStrategyC());
        Response.Write(context.ContextInterface() + "<br>");
    }
}

namespace com.cnblogs.WizardWu.sample01
{
    //抽象算法类 (亦可用接口)。定义了所有策略的公共接口
    abstract class Strategy
    {
        //算法需要完成的功能
        public abstract string AlgorithmInterface();
    }

    //具体算法类A
    class ConcreteStrategyA : Strategy
    {
        //算法A实现方法
        public override string AlgorithmInterface()
        {
            return "算法A实现";
        }
    }

    //具体算法类B
    class ConcreteStrategyB : Strategy
    {
        //算法B实现方法
        public override string AlgorithmInterface()
        {
            return "算法B实现";
        }
    }

    //具体算法类C
    class ConcreteStrategyC : Strategy
    {
        //算法C实现方法
        public override string AlgorithmInterface()
        {
            return "算法C实现";
        }
    }

    //执行对象。需要采用可替换策略执行的对象
    class Context
    {
        Strategy strategy;

        public Context(Strategy strategy)        //构造函数
        {
            this.strategy = strategy;
        }

        //执行对象依赖于策略对象的操作方法
        public string ContextInterface()
        {
            return strategy.AlgorithmInterface();
        }
    }

} // end of namespace


/* 

上一页  1 2 3 4  下一页

Tags:Design Patterns Strategy

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接