Java 设计模式之策略模式

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/chennai1101/article/details/84858859

本文为笔者学习《Head First设计模式》的笔记,并加入笔者自己的理解和归纳总结

策略模式定义了算法族,分别封装起来,让它们之间可以相互替代,此模式让算法的变化独立于使用算法的客户。

结构图
在这里插入图片描述

交通策略(TrafficStrategy)。

public interface TrafficStrategy{
    void run();
}

实现三种交通策略,开车(CarStrategy)、公交(BusStrategy)和自行车(BicycleStrategy)。

public class CarStrategy implements TrafficStrategy{

    @Override
    public void run() {
        System.out.println("buy car");
    }
}

public class BusStrategy implements TrafficStrategy{

    @Override
    public void run() {
        System.out.println("buy bus");
    }

}

public class BicycleStrategy implements TrafficStrategy{

    @Override
    public void run() {
        System.out.println("buy bicycle");
    }

}

人们(People)上班时可以采用不同的交通策略(TrafficStrategy)。

public class People {
    private String name;

    public People(String name) {
        this.name = name;
    }

    public void gotoWork(ITrafficStrategy strategy) {
        System.out.print(name + " goto work ");
        strategy.run();
    }

}

运行

public static void main(String[] args) {
    People jack = new People("Jack");
    jack.gotoWork(new CarStrategy());

    People mike = new People("Mike");
    mike.gotoWork(new BusStrategy());

    People lily = new People("Lily");
    lily.gotoWork(new BicycleStrategy());
}

输出

Jack goto work buy car
Mike goto work buy bus
Lily goto work buy bicycle

相关文章
Java 设计模式之策略模式
Java 设计模式之观察者模式
Java 设计模式之装饰者模式
Java 设计模式之工厂方法模式
Java 设计模式之抽象工厂模式
Java 设计模式之单例模式

猜你喜欢

转载自blog.csdn.net/chennai1101/article/details/84858859