美文网首页Java 程序员Java
细说一下设计模式中的策略模式!

细说一下设计模式中的策略模式!

作者: 程序花生 | 来源:发表于2021-07-13 14:52 被阅读0次

    Java中的设计模式可分为创建型模式、结构型模式、行为型模式,每一类都包括多个具体的设计模式。

    今天我们就来细说一下行为型模式中的策略模式。

    策略模式,Strategy Pattern,指一个行为随着策略对象改变而改变,无须使用if-else来进行过多的判断,而是在不同的情况下使用不同的策略;这些策略都实现了同一个接口或者抽象类。

    使用场景

    策略模式主要应用在业务中具有多种同类型功能时,并且在编写程序时,总是要使用if-else来判断使用哪一类时,就可以使用策略模式。

    如计算器,加减乘除四种最基础的运算方式都具有运算机制,所以它们就可以使用策略模式,以此声明出多个策略,通过不同的策略来实现加、减、乘、除四种运算;当然我们目前的运算机制有很多,如果使用策略模式的话,会出现很多策略。

    在使用策略模式的时候,还是要权衡一下是不是策略模式能带来的好处多于坏处,有的人会使用工厂模式配合策略模式,这样就直接可以彻底的脱离if-else的束缚。

    实现过程

    我们接下来针对旅游出行场景实现一下策略模式,代码如下:

    1. LY.java 先实现一个旅游出行接口。
    public interface LY {
        //出行方式
        String trip();
    }
    
    1. Bicycle.java 实现一个旅游出行自行车类。
    /**
     * 自行车
     */
    public class Bicycle implements LY{
        @Override
        public String trip() {
            return "骑着自行车,一路没有坡!";
        }
    }
    
    1. Hire.java 实现一个旅游出行出租车类。
    /**
     * 出租车
     */
    public class Hire implements LY{
        @Override
        public String trip() {
            return "打上出租车,路上随便喝!";
        }
    }
    
    1. Walk.java 实现一个旅游出行走路类。
    /**
     * 走路
     */
    public class Walk implements LY{
        @Override
        public String trip() {
            return "要么走断腿,要么走的稳!";
        }
    }
    
    1. LYContext.java 实现一个策略转换类。
    public class LYContext {
    
        private LY ly;
    
        public LYContext(LY ly){
            this.ly = ly;
        }
    
        /**
         * 方法运行
         */
        public String execute(){
            return ly.trip();
        }
    }
    
    1. 现在都实现完了,写个测试类来验证一下。
    public class Test1 {
        public static void main(String[] args) {
            LYContext lyContext = new LYContext(new Hire());
            System.out.println(lyContext.execute());
            lyContext = new LYContext(new Walk());
            System.out.println(lyContext.execute());
            lyContext = new LYContext(new Bicycle());
            System.out.println(lyContext.execute());
        }
    }
    

    运行结果如下图:

    作者:墨三十一
    链接:https://juejin.cn/post/6983686664367390757
    来源:掘金

    相关文章

      网友评论

        本文标题:细说一下设计模式中的策略模式!

        本文链接:https://www.haomeiwen.com/subject/ojcspltx.html