简介
工厂模式是创建型的设计模式,它接受指令,创建出符合要求的实例;它主要解决的是资源的统一分发,将对象的创建完全独立出来,让对象的创建和具体的使用客户无关。主要应用在多数据库选择,类库文件加载等。
工厂是创建型模式,它的作用就是创建对象。
策略模式是为了解决的是策略的切换与扩展,更简洁的说是定义策略族,分别封装起来,让他们之间可以相互替换,策略模式让策略的变化独立于使用策略的客户。
策略是行为型模式,它的作用是让一个对象在许多行为中选择一种行为。
简单实例
先写一个人的接口类,有 eat,run,wear 3 个方法
1 | public interface People { |
分别写两个实现类,一个是小明的实现类,一个是小红的实现类
1 | public class Xiaoming implements People{ |
简单工厂模式的代码
1 | public class PeopleFactory { |
再来看下策略模式的代码
1 | public class StrategySign { |
通过测试类运行两种模式
1 |
|
小结
工厂模式中只管生产实例,具体怎么使用工厂实例由调用方决定,策略模式是将生成实例的使用策略放在策略类中配置后才提供调用方使用。
工厂模式调用方可以直接调用工厂实例的方法属性等,策略模式不能直接调用实例的方法属性,需要在策略类中封装策略后调用。
策略模式将不同的算法封装成一个对象,这些不同的算法从一个抽象类或者一个接口中派生出来,客户端持有一个抽象的策略的引用,这样客户端就能动态的切换不同的策略。 而工厂模式又分为简单工厂和抽象工厂和工厂模式 ,这些工厂是为了创建对象而出现的,工厂模式创建不同的单个对象,而抽象工厂是为了创建不同的一些列的对象或者操作
工厂模式类似英语考试的完形填空题(自己考虑填什么词、句子),策略模式类似信息匹配题(提前写好选择项,当你有多个填空时,直接选就好了,没有适合的就再多写几个选择项)。