一、使用场景
1)对象的创建需要一系列的步骤:创建某些组建的时候,可能需要获取位置、形状等信息,或者需要对某些参数进行初始化;
2)无法预知对象确切类别及其依赖关系:比如需要创建一辆奥迪A6,不清楚A6的类名及创建细节,但是你可以通过奥迪工厂,指定它生产A6这个型 ;
3)希望用户能扩展你的软件库或者框架的内部组件:一个验证码工具包,实现了文字验证码。 如果想扩展新的验证方式[滑动验证码],用户只需增加该验证方式及对应的实现方法,用户在使用时,通过工厂形式生产对应的验证方式;
图 扩展新的验证方式
4)解耦:将创建实例的工作从调用方中分离出,与调用方解耦。调用方不需要具体的创建过程,只管使用;
二、工厂模式
2.1 简单工厂模式
2.1.1 模式说明
定义一个创建对象的接口,将对象的创建和本身的业务逻辑分离。
图 简单工厂模式
2.1.2 代码实现
内部类实现简单工厂模式:
2.1.3 优缺点
优点:1)外界可不必管这些对象如何创建及如何组织的,明确了各自的职责和权利,有利于整个软件体系结构的优化;
缺点:1)违反了高内聚责任分配原则,将全部创建逻辑集中到一个工厂类中;2)它所能创建的类只能是事先考虑的,如果需要添加新的类,就需要改变工厂类;3)当具体类不断增多的时候,很难避免模块功能的蔓延,对系统的维护和扩展非常不利;
这种模式一般只在很简单的情况下应用,在实际开发中使用较少。
2.2 工厂方法模式
2.2.1 模式说明
将工厂抽象化,定义了一个创建对象的接口,每增加新的产品,只需增加该产品以及对应的工厂实现类。
2.2.2 代码实现
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!