![在这里插入图片描述](https://img-blog.csdnimg.cn/98c8dc931d744ffd91f92f01710c34fb.png#pic_center)
1. 首先我们来创建人的策略接口PersonStrategy
public interface PersonStrategy {
String getPerson();
}
2. 创建人的环境类
public class PersonContext {
private PersonStrategy personStrategy;
public PersonContext(PersonStrategy personStrategy) {
this.personStrategy = personStrategy;
}
public String producePerson() {
return personStrategy.getPerson();
}
}
3. 再依次创建人的策略接口的实现类(3个)
public class PersonManStrategy implements PersonStrategy {
@Override
public String getPerson() {
return "男人生产出来了";
}
}
public class PersonWomanStrategy implements PersonStrategy {
@Override
public String getPerson() {
return "女人生产出来了";
}
}
public class PersonRobotStrategy implements PersonStrategy {
@Override
public String getPerson() {
return "机器人生产出来了";
}
}
4. 最后创建调用的客户端
public class PersonClient {
public static void main(String[] args) {
PersonContext personWomanContext = new PersonContext(new PersonWomanStrategy());
System.out.println(personWomanContext.producePerson());
PersonContext personManContext = new PersonContext(new PersonManStrategy());
System.out.println(personManContext.producePerson());
}
}
5. 总结下策略模式和简单工厂模式的区别:策略模式我们不需要关心算法的具体实现方法和调用,只需要关心算法策略对象的创建即可(需要我们手动创建策略对象)。而简单工厂模式有点相反:简单工厂则需要我们手动去调用产品方法(类似环境类调用的getPerson方法),而不需要我们关心产品(类似本文中的策略对象)是如何生产出来的(产品的生产包装在了工厂方法里)。