zoukankan      html  css  js  c++  java
  • Strategy 模式

    目录:

    AbstractPunish.cs;//抽象策略类

    Context.cs;//管理类

    LaJiaoShui.cs;//具体策略类

    LaoHuDeng.cs;//具体策略类

    XiaZhuQian.cs;//具体策略类

    Program.cs.//客户端类

    //AbstractPunish.cs;

    namespace StrategyPunish
    {
        abstract class Punish
        {
            public abstract void PunishMethod();
        }

    }

    //Context.cs;

    namespace StrategyPunish
    {
        //策略Context
        class PunishContext
        {
            //声明一个父类对象
            private Punish punish = null;

            //设置策略行为,参数为具体的
            //public PunishContext(Punish punish)
            //{
            //    this.punish = punish;
            //}
            public PunishContext(string type)
            {
                switch (type)
                {
                case "ljs":
                    punish = new LaJiaoShui();
                    break;
                case "lhd":
                    punish = new LaoHuDeng();
                    break;
                case "xzq":
                    punish = new XiaZhuQian();
                    break;                                        
                }
            }

            //得到结果(利用了多态机制,不同的策略行为导致不同的结果)
            public void GetResult()
            {
                if (punish != null)
                {
                    punish.PunishMethod();
                }
                else
                {
                    Console.WriteLine("输入非法");
                }

            }
        }
    }

    //LaJiaoShui.cs;

    namespace StrategyPunish
    {
        //正常,继承Punish
        class LaJiaoShui : Punish
        {
            public override void PunishMethod()
            {
                Console.WriteLine("LaJiaoShui!");
            }
        }

    }

    //LaoHuDeng.cs;

    namespace StrategyPunish
    {
        //正常,继承Punish
        class LaoHuDeng : Punish
        {
            public override void PunishMethod()
            {
                Console.WriteLine("LaoHuDeng!");
            }
        }

    }

    //XiaZhuQian.cs;

    namespace StrategyPunish
    {
        //正常,继承Punish
        class XiaZhuQian : Punish
        {
            public override void PunishMethod()
            {
                Console.WriteLine("XiaZhuQian!");
            }
        }

    }

    //Program.cs.

    namespace StrategyPunish
    {
        class Program
        {
            static void Main(string[] args)
            {
                //PunishContext pc;
                //pc = new PunishContext(new LaJiaoShui());
                //pc.GetResult();

                //pc = new PunishContext(new LaoHuDeng());
                //pc.GetResult();

                //pc = new PunishContext(new XiaZhuQian());
                //pc.GetResult();
                while (true)
                {
                    string strAha = Console.ReadLine();
                    PunishContext pc;
                    pc = new PunishContext(strAha);
                    pc.GetResult();
                }

            }
        }
    }

  • 相关阅读:
    .NET探索模型路由约定实现伪静态
    .NET中使用DebuggerDisplay轻松定制调试
    .NET探索平台条件编译
    Spring Boot+Logback输出日志到指定路径
    SAPD:FSAF升级版,合理的损失值加权以及金字塔特征选择 | ECCV 2020
    FSAF:嵌入anchor-free分支来指导acnhor-based算法训练 | CVPR2019
    RepPointsV2:更多的监督任务,更强的性能 | NIPS 2020
    RepPoints:微软巧用变形卷积生成点集进行目标检测,创意满满 | ICCV 2019
    CornerNet-Lite:CornerNet粗暴优化,加速6倍还提点了 | BMVC 2020
    SaccadeNet:使用角点特征进行two-stage预测框精调 | CVPR 2020
  • 原文地址:https://www.cnblogs.com/MayGarden/p/1521377.html
Copyright © 2011-2022 走看看