概念:实例化对象,用工厂方法代替new操作
工厂模式包括工厂方法模式和抽象工厂模式
抽象工厂模式是工厂方法模式的扩展
意图:
定义一个接口来创建对象,但是让子类来决定哪些类需要被实例化
工厂方法把实例化的工作推迟到子类中去实现
什么情况下适合工厂模式:
有一组类似的对象需要创建
在编码时不能预见需要创建哪种类的实例
系统需要考虑扩展性,不应依赖于产品类实例如何被创建、组合和表达的细节
工厂模式的动机:
项目中的现状:
在软件系统中经常面临着“对象”的创建工作,由于需求的变化,这个对象可能随之也会发生改变,但它却拥有比较稳定的接口
为此,我们需要提供一种封装机制来隔离出这个易变对象的变化,从而保持系统中其他依赖该对象的对象不能随着需求的变化而变化(低耦合)
基于项目现状将代码进行如下设计:
1.尽量松耦合,一个对象的依赖对象的变化与本身无关
2.具体产品与客户端剥离,责任分割
工厂模式类图:
抽象工厂模式类图:
说明图: