设计模式(三)、FACTORY METHOD(工厂方法)---对象创建型模式

本文详细介绍了工厂方法设计模式的概念、动机及应用场景。通过定义创建对象的接口,让子类决定实例化哪个类,实现对象创建与使用分离,降低系统的耦合度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

andy
    FACTORY METHOD(工厂方法)---对象创建型模式

  1. 意图(intent)

    定义一个用于创建对象的接口,让子类决定实例化哪一个类。Factory Method使一个类的实例化延迟到其子类。

2、动机(motivation)

框架使用抽象类定义和维护对象之间的关系。这些对象的创建通常也由框架负责。工厂方法解决了框架必须实例化类,但是它只知道不能实例化的抽象类的问题。在软件系统中,经常面临着某个对象的创建工作。随着需求的变化,该对象发生着激烈的变化,而其接口却是稳定不变的。如何提供一种封装机制,隔离出这个易变的对象,从而保证依赖该对象的对象不随着需求的变化而不断变化。

Factory Method主要是为了隔离类对象的使用者和具体类型之间的耦合关系。当一个具体类型经常发生剧烈变化时,紧耦合关系会使软件系统变得非常脆弱。

Factory Mehtod方法使一个具体类的创建工作延迟到子类来实现,从而实现一个扩展的策略,较好地解决了这种紧耦合关系。

Factory Method解决单个对象的需求变化。Abstract Factory解决一系列对象的需求变化。Builder模式解决复杂对象内部各个对象部分的需求变化。

3、适用性 :

  • 当一个类不知道它所必需创建的对象的类的时候。
  • 当一个类希望由它的子类指定所创建对象的时候。
  • 当类将创建对象的职责委托给多个帮助子类中的某一个,并且你希望将哪一个帮助子类是代理者这一信息局部化的时候。

4、结构

 

5、参与者

Product:剧烈变化对象类的统一接口。 定义工厂方法所创建的对象的接口。

ConcreteProduct:剧烈变化的对象。 实现Product接口

Creator:

  • 声明工厂方法,该方法返回一个Product类型的对象。Creator也可以定义一个工厂方法的缺省实现,它返回一个缺省的ConcreteProduct对象。
  • 可以调用工厂方法以创建一个Product对象。

ConcreteCreator:重新定义工厂方法返回一个ConcreteProduct实例。

6、协作

Creator依赖它的子类来定义工厂方法,所以它返回一个适当的ConcreteProduct实例。

7、效果

  • 工厂方法不再将与特定应用有关的类绑定到你的代码中,代码仅仅处理Product接口。 因此它可以与用户定义的任何concreteP
  • 为子类提供挂钩(hook)。用工厂方法在一个类的内部创建对象通常比直接创建对象更灵活。Factory Method给子类一个挂钩以提供对象的扩展版本。
  • 连接平行的类层次。当一个类将它的一些职责委托给另一个类的时候,就产生了平行类层次。

8、实现

当应用Factory Method模式时需要考虑下面一些问题:Factory Method主要有两种不同的情况:一是Creator类是一个抽象类并且不提供它所声明的工厂方法的实现;二是Creator类是一个具体类而且为工厂方法提供一个缺省的实现。

构造器只是将产品初始化为0,而不是创建一个具体的产品。访问者返回该产品但首先它要检查该产品的存在,如果该产品不存在,访问者就创建它。这种方法被称为lazyinitialization.

转载于:https://www.cnblogs.com/dequan-lee/archive/2007/10/12/922022.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值