【Java设计模式】策略模式

        在策略模式中,我们创建表示各种策略的对象和一个行为随着策略对象改变而改变的 context 对象。策略对象改变 context 对象的执行算法。看定义是不一定能够理解的,建议是看一遍文字接着看代码去理解,会觉得简简单单。

        为了防止总是固定的做法,所以才有了策略模式这种设计模式,根据我们的需求去传递我们想要的值从而完成任务。优点就是可以让提高扩展性避免多重判断。缺点就是策略类可能会变得很多,并且对外暴露。

        适用场景:在Spring就有策略模式、在线程池中也有策略模式(创建线程池的第七个参数)。

创建接口

// 定义一个去学校方式的接口
public interface Style {
    void goToSchool();
}

实现类1

public class Foot implements Style {
    public void goToSchool() {
        System.out.println("走路上学");
    }
}

实现类2

public class Car implements Style {
    public void goToSchool() {
        System.out.println("开车上学");
    }
}

实现类3

public class Run implements Style {
    public void goToSchool() {
        System.out.println("跑步上学");
    }
}

策略类

public class Context {
    private Style style;

    public Context(Style style) {
        this.style = style;
    }

    public void Chance() {
        this.style.goToSchool();
    }
}

测试

public class Main {
    public static void main(String[] args) {
        // 创建策略类:可以传入我们想要的方式去上学
        Context context = new Context(new Car());
        context.chance();// 开车上学
    }
}

你可能感兴趣的:(设计模式,策略模式,java,设计模式)