0
点赞
收藏
分享

微信扫一扫

【JAVA】二、设计模式之策略模式

司马吹风 2024-11-18 阅读 4

一、简介

设计模式作为一种思维方式,我更喜欢用简单的语言表达,主打思想即可,无需在意实现的编程语言。我认为

二、代码讲解

由于刚好用C#写工具,下面就用C#代码作为展示吧,主要是思维,选择那种编程语言不影响。

 //设置一个策略接口,用于给具体策略来“重写”方法。
    interface Strategy 
    {
        void myExpress();
    }

    //策略A:实现算法方式一
    class A_Strategy : Strategy
    {
        public void myExpress()
        {
            Console.WriteLine("this is a A_Strategy");
        }
    }

    //策略B:实现算法方式二
    class B_Strategy : Strategy
    {
        public void myExpress()
        {
            Console.WriteLine("this is a B_Strategy");
        }
    }

    //策略C:实现算法方式三
    class C_Strategy : Strategy
    {
        public void myExpress()
        {
            Console.WriteLine("this is a C_Strategy");
        }
    }

    //使用环境类进行封装,用户的使用对象
    class Pakagestrategy
    {
        //核心:要想将多个类统一封装,必须使用接口类。
        Strategy strategy;
        public Pakagestrategy(Strategy strategy)
        {
            //核心:通过接口类的重写,这里的对应可以是任意具体策略类的对象
            this.strategy = strategy;
        }

        //核心:利用重写特征,用一个函数PackeMyEpxress,包装了多个myExpress;
        public void PackeMyEpxress()
        {
            this.strategy.myExpress();
        }
    }

    //用户类
    class user
    {
        public void userMethod()
        {
            //用户通过环境类Pakagestrategy来执行对应的算法(策略);
            Pakagestrategy pakagestrategyA = new Pakagestrategy(new A_Strategy());
            pakagestrategyA.PackeMyEpxress();

            //再不改变环境类的情况下,我们可以不断重写更多算法,让用户可以使用一样的接口,但根据参数的不同实现功能多能;
            Pakagestrategy pakagestrategyB = new Pakagestrategy(new B_Strategy());
            pakagestrategyB.PackeMyEpxress();

            Pakagestrategy pakagestrategyC = new Pakagestrategy(new C_Strategy());
            pakagestrategyC.PackeMyEpxress();
        }
    }

三、小结

个人认为,设计模式是一种处理问题的思维方式。更注重的是理解其中变量处理的巧妙之处。不需要太刻意的记住他们的附带属性,比如它是否属于行为模式,还是遵循了什么开闭原则这些。都不是我们的学习重点。去繁化简,灵活运用而不注重形式才是学习之道。

举报

相关推荐

0 条评论