同:

在模式结构上,两者很相似

java 策略模式和工厂模式组合使用_java 策略模式和工厂模式组合使用

 

异:

1.工厂是创建型模式,它的作用就是创建对象,根据传参不同,创建不同对象,创建完对象再使用对象的方法
   策略是行为型模式,它的作用是让一个对象在许多行为中选择一种行为

2.一个关注对象创建,一个关注行为封装

3.工厂传参是一个类型,策略传参是一个new对象

总结:

工厂模式可以做到的事情,策略模式都可以做到。策略模式可以做到的事情,工厂模式也可以做到,只是会变得麻烦。因为,工厂模式主要是返回的接口实现类的实例化对象,然后再调用对象的方法,而策略模式的对象是在实例化策略模式的时候已经创建好了,我们可以在策略模式中随意的拼接重写方法,而工厂模式是不管方法的拼接这些的,他只关注最后的结果,不注重过程,每次只返回实例化对象,然后再一次一次调用对象的方法,而策略模式注重的是过程。

分别适用场景:

工厂模式是创建型的设计模式,它接受指令,创建出需要的实例;主要解决的是资源的统一分发,将对象的创建完全独立出来,让对象的创建和具体的使用客户无关。主要应用在多数据库选择,类库文件加载等。

策略模式是为解决策略的切换与扩展,更简洁的说是定义策略族,分别封装起来,让他们之间可以相互替换,策略模式让策略的变化独立于使用策略的客户。

补充:

策略模式和微服务

策略模式和微服务很像,比如我们写3个接口,吃饭是一个微服务,跑步是一个微服务,穿衣是一个微服务。策略模式的宗旨就是将各项方法之间连接起来,达到一个新的方法,微服务的宗旨也是防止服务的多次调用,降低代码的耦合度,因此这么看来策略模式和微服务还是比较像的