Unity 设计模式 之 创造型模式-【工厂方法模式】【抽象工厂模式】

Unity 设计模式 之 创造型模式-【工厂方法模式】【抽象工厂模式】

目录

Unity 设计模式 之 创造型模式-【工厂方法模式】【抽象工厂模式】

一、简单介绍

二、工厂方法模式 (Factory Method Pattern)

1、什么时候使用工厂方法模式

2、使用工厂模式的好处

3、使用工厂方法模式时的注意事项

三、在 Unity 中使用 工厂方法 模式

1、 产品接口 (Shape)

2、具体产品类 (Cube 和 Sphere)

3、工厂接口 (ShapeFactory)

4、具体工厂类 (CubeFactory 和 SphereFactory)

5、客户端代码

6、实现总结

四、抽象工厂模式 (Abstract Factory Pattern)

1、什么时候使用抽象工厂模式

2、使用抽象工厂模式的好处

3、使用抽象工厂模式时的注意事项

五、在 Unity 中使用 抽象工厂 模式

1、抽象产品接口

2、具体产品类

3、抽象工厂接口

4、具体工厂类

5、客户端代码

6、实现总结


一、简单介绍

设计模式 是指在软件开发中为解决常见问题而总结出的一套 可复用的解决方案。这些模式是经过长期实践证明有效的 编程经验总结,并可以在不同的项目中复用。设计模式并不是代码片段,而是对常见问题的 抽象解决方案,它提供了代码结构和模块间交互的一种设计思路,帮助开发者解决特定的设计问题。

设计模式的特点:

  1. 通用性:设计模式针对的是软件开发中常见的设计问题,适用于各种软件工程项目。
  2. 可复用性:设计模式可以在不同项目和环境下被重复使用,提高代码的可维护性和扩展性。
  3. 可扩展性:设计模式有助于让代码结构更加灵活,易于扩展和修改。
  4. 模块化:通过设计模式,可以减少代码的耦合性,增强模块间的独立性。
  5. 提高沟通效率:设计模式为开发者提供了一种通用的设计语言,使得团队成员能够快速理解并讨论设计方案。

二、工厂方法模式 (Factory Method Pattern)

工厂方法模式 是一种创建型设计模式,用于定义一个用于创建对象的接口,但让子类决定实例化哪个具体类。它将 实例化对象的任务 推迟给子类,以解决创建对象时可能产生的耦合问题。

工厂方法模式的工作原理:

工厂方法模式的核心思想是 推迟实例化,将对象的创建延迟到子类中。通过定义一个抽象工厂类,客户端可以通过这个工厂接口生成产品对象,而不需要知道具体的类名,避免了直接使用 new 关键字创建对象。子类负责实现工厂方法,根据不同的业务需求来决定返回哪个产品对象。

工厂方法模式主要有以下几个组成部分:

  1. 产品接口(Product):定义所创建对象的通用接口。
  2. 具体产品类(ConcreteProduct):实现产品接口的具体类,表示不同的对象类型。
  3. 工厂接口(Creator):声明工厂方法,它返回产品接口的实例,通常是抽象类或接口。
  4. 具体工厂类(ConcreteCreator):实现工厂接口,并负责具体产品对象的实例化。

工厂方法模式的结构图

  1. Product:抽象产品
  2. ConcreteProduct:具体产品
  3. Creator:抽象工厂(包含工厂方法)
  4. ConcreteCreator:具体工厂
classDiagram
    class Creator {
      <<abstract>>
      + factoryMethod() Product
    }
    class ConcreteCreator {
      + factoryMethod() ConcreteProduct
    }
    class Product {
      <<abstract>>
    }
    class ConcreteProduct {
    }
    
    Creator <-- ConcreteCreator
    Creator --> Product
    ConcreteCreator --> ConcreteProduct
    Product <|-- ConcreteProduct

1、什么时候使用工厂方法模式

  1. 对象创建过程复杂且可能发生变化时

    • 如果对象的创建过程涉及多个步骤,或者需要初始化大量参数,可以使用工厂方法模式将这些复杂的创建过程封装起来。当对象创建的逻辑变得更加复杂时,可以通过扩展工厂来简化代码维护。
  2. 当需要遵循开闭原则时

    • 如果系统需要根据不同的需求扩展不同的产品类,且不希望修改现有代码,工厂方法模式是理想选择。通过扩展新的具体工厂类,可以实现新的对象类型,而不影响现有系统。
  3. 系统中有许多类似的对象,且需要灵活的控制其创建过程时

    • 在某些情况下,系统中可能有多种不同的对象,每个对象都有各自的创建方式,使用工厂方法模式可以灵活地决定创建哪种类型的对象,而不必直接依赖于具体类。
  4. 当具体类的初始化工作依赖于外部资源时

    • 例如,在游戏开发中,工厂方法可以用来创建游戏对象,将资源加载、配置和初始化的过程封装在工厂中。

2、使用工厂模式的好处

  1. 解耦对象创建和使用

    • 工厂方法模式将对象的创建逻辑与业务逻辑分离,避免了在代码中直接实例化对象(使用 new 关键字),从而降低了代码的耦合性。
  2. 提高代码的扩展性

    • 工厂方法模式符合开闭原则(OCP),当需要添加新产品时,不需要修改现有代码,只需增加新的具体产品类和对应的工厂实现。这使得系统在面对新需求时可以轻松扩展。
  3. 简化对象创建过程

    • 对于某些复杂对象的创建过程,工厂模式隐藏了这些细节,只需调用工厂方法即可获得对象实例。工厂封装了具体的创建逻辑,客户端不必关心对象的构造过程。
  4. 增强代码可维护性

    • 通过将对象创建逻辑封装在工厂中,所有对象的生成都集中管理。如果需要修改某类对象的创建过程,只需修改工厂类即可,不会影响到其他使用该对象的代码。
  5. 支持不同的对象实例化

    • 工厂方法模式允许在运行时决定生成何种对象实例,提供了更大的灵活性。例如,不同的子类可以根据业务逻辑创建不同的产品,而不用修改原有代码。

3、使用工厂方法模式时的注意事项

  1. 工厂类的数量增加

    • 如果系统中有很多不同的产品类型,会产生大量的具体工厂类,增加了类的数量。可以通过简单工厂模式抽象工厂模式来减少工厂类数量。
  2. 增加了代码的复杂性

    • 工厂方法模式虽然提供了灵活性,但也增加了代码的复杂性,特别是在需要创建大量具体产品时,必须为每个产品创建单独的工厂类。
  3. 适合对象创建逻辑复杂的情况

    • 如果对象的创建过程非常简单,使用工厂方法模式可能会显得过于复杂,直接实例化对象反而更简洁明了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

仙魁XAN

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值