游戏设计模式学习笔记(20)工厂模式、抽象工厂模式

游戏设计模式学习笔记(20)工厂模式、抽象工厂模式

参考:

《设计模式与游戏完美开发》

《游戏编程模式》(https://github.com/tkchu/Game-Programming-Patterns-CN)

《图说设计模式( Graphic Design Patterns)》(https://github.com/me115/design_patterns)

【游戏设计模式】浅墨_毛星云: https://blog.csdn.net/poem_qianmo/article/details/53240330

runoob.com 设计模式:https://www.runoob.com/design-pattern/factory-pattern.html


工厂模式

定义

  • 定义一个创建对象的接口,让其子类自己决定实例化哪一个工厂类,工厂模式使其创建过程延迟到子类进行。

游戏设计模式学习笔记(20)工厂模式、抽象工厂模式_第1张图片

  • Product:抽象产品,由工厂产出。
  • ConcreteProduct:具体产品,这些产品都由ConcreteFactory产出。
  • Factory:抽象工厂,定义能产出Produce的方法。
  • ConcreteFactory:具体工厂,产生指定产品。

何时使用

  • 一个类不知道它所需要的对象的类。
  • 将创建对象的任务委托给多个工厂子类中的某一个,客户端在使用时可以无须关心是哪一个工厂子类创建产品子类,需要时再动态指定,可将具体工厂类的类名存储在配置文件或数据库中。

优缺点

  • 优点
    • 一个调用者想创建一个对象,只要知道其名称就可以了。
    • 屏蔽产品的具体实现,调用者只关心产品的接口。
  • 缺点
    • 每次增加一个产品时,都需要增加一个具体类和对象实现工厂,使得系统中类的个数成倍增加,在一定程度上增加了系统的复杂度,同时也增加了系统具体类的依赖

应用

  • 日志记录器:记录可能记录到本地硬盘、系统事件、远程服务器等,用户可以选择记录日志到什么地方。
  • 资源加载:从Resource、本地或远程下载得到资源。
  • 配合对象池使用,工厂创建产品前,先尝试从对象池中拿,产品销毁也通过工厂,即放回对象池。

抽象工厂模式

定义

  • 提供一个创建一系列相关或相互依赖对象的接口,而无须指定它们具体的类。

游戏设计模式学习笔记(20)工厂模式、抽象工厂模式_第2张图片

  • ConcreteFactory1是给环境1 时使用的,可以产生ProductA1 和 ProductB1。
  • ConcreteFactory2是给环境2 时使用的,可以产生ProductA2 和 ProductB2。

应用

  • 生成不同操作系统的程序。
  • 一堆UI工具,NGUI、iGUI等要换的时候一套一起换。

你可能感兴趣的:(游戏设计模式,学习笔记)