美文网首页
策略设计模式

策略设计模式

作者: 不服输的小蜗牛 | 来源:发表于2020-07-25 14:45 被阅读0次

    1.什么是策略设计模式:

    定义了一组算法,将每个算法都封装起来,并且使它们之间可以互换。

    多读几遍,仔细理解。然后我们思考下, image.png
    在java中什么情况下一些类才能互换,答案就是实现了统一的接口,或者继承了同一个父类,然后我们在定义方法的时候接受的是接口类型或者是父类。

    2.什么时候使用策略模式:

     一个系统有许多类,而区分它们的只是他们直接的行为时,比如旅游时乘坐的交通工具、玩具汽车安装不同牌子的电池、
    

    3.策略模式的优缺点:

    优点: 1、算法可以自由切换。 2、避免使用多重条件判断。 3、扩展性良好。
    缺点: 1、策略类会增多。 2、所有策略类都需要对外暴露。
    4.策略模式的实现:
    我们以玩具汽车为例,小时候我们都玩过四驱车,这个汽车可以换的东西很多,比如说车轱辘,电机,电池,外壳,这些都是可以单独购买然后安装上去的。我们以电池为例,五毛钱的电池和奥迪双钻电池那跑的长度肯定是不一样的。但是他们都是五号电池。
    代码如下

    //定义个电池接口
    public interface Battery {
        //电池可以跑多长距离
        void run();
    }
    
    实现不同品牌的电池,比如南孚电池、东孚电池、西孚电池。
    public class SourceBattery implements Battery {
        @Override
        public void run() {
            System.out.println("我是南孚电池,我能跑5000km");
        }
    }
    
    public class EastBattery implements Battery {
        @Override
        public void run() {
            System.out.println("我是东孚电池,我能跑1000km");
        }
    }
    
    
    public class WestBattery implements Battery {
        @Override
        public void run() {
            System.out.println("我是西浮电池,我能跑2000km");
        }
    }
    
    
    //然后实现我们的小汽车类
    public class Car {
        //通过组合的方式把电池的接口类添加进来
        private Battery mbattery;
    
        public void setMbattery(Battery mbattery) {
            this.mbattery = mbattery;
        }
    
        public void run(){
            if(mbattery!=null){
                mbattery.run();
            }
        }
    }
    
    
    //测试代码
    public class Main {
        public static void main(String[] args) {
            Car car = new Car();
            car.setMbattery(new SourceBattery());
            car.run();
            car.setMbattery(new EastBattery());
            car.run();
            car.setMbattery(new WestBattery());
            car.run();
    }
    
    

    输出

    我是南孚电池,我能跑5000km
    我是东孚电池,我能跑1000km
    我是西浮电池,我能跑2000km
    

    根据我们安装不同的电池。我们的小汽车就能跑出不一样的距离。这就是我们的策略设计模式

    相关文章

      网友评论

          本文标题:策略设计模式

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