美文网首页
策略设计模式

策略设计模式

作者: 不服输的小蜗牛 | 来源:发表于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