我们的2019设计模式Java 杂谈

设计模式之策略模式

2019-02-28  本文已影响1人  GitCode8

策略模式(Strategy Pattern):定义一系列算法,将每一个算法封装起来,并让它们可以相互替换。大白话就是,当一个任务有个解决方法,每一个解决方法都是是一个策略,可以进行解决该任务。
在这里,我们举个栗子。有一项工作,需要工人来完成。
1、我们定义一个接口,抽象工人都会做完成工作。

public interface Strategy {
    void doJob();
}

接着,我们再定义两个具体的工人,他们完成工作有自己的模式。也就对应策略模式不同解决方法的具体内容。并实现策略接口。

public class WorkerDayStrategy implements Strategy {
    @Override
    public void doJob() {
        System.out.println("我是工人Day,我只在白天工作");
    }
}

public class WorkerNightStrategy implements Strategy {
    @Override
    public void doJob() {
        System.out.println("我是工人Night,我只在晚上工作");
    }
}

2、到此,我们需要对外提供工人,根据客户需求,选择不同工人。也就是策略模式,根据不同的需求,选择不同的算法(解决方法)

public class Worker {
    private Strategy strategy;

    public Worker(Strategy strategy) {
        this.strategy = strategy;
    }

    public void doWork() {
        strategy.doJob();
    }

}

3、 目前为止,是时候对外营业了。有客户来选择工人了。

public class Main {
    public static void main(String[] args) {
        Worker worker=new Worker(new WorkerDayStrategy());

        worker.doWork();
    }

}

运行结果

我是工人Day,我只在白天工作

总结

上一篇下一篇

猜你喜欢

热点阅读