美文网首页
19暑期学习-Day11

19暑期学习-Day11

作者: iqxtreme | 来源:发表于2019-07-13 15:52 被阅读0次

(续Day10)

3 创建型模式

3.3 生成器模式(Builder)

  • 之前的抽象工厂模式关注的重点是工厂产品间的关系。而生成器模式更加关注如何创建产品(Product),即用相同的逻辑过程,创建不同的产品。
  • 关键成分:导向器(Director)生成器(Builder)
  • 为获取特定的产品,客户要使用的具体的生成器。但导向器仅关心生成器接口。
  • 导向器可以看成是一个生产流程的封装。给导向器提供不同的生成器就可以生产不同的产品。
    导向器负责一个具体且可能非常复杂的处理逻辑,这个处理逻辑最终会提供给客户一个结果,同时,在这个处理逻辑过程中还会伴随许多复杂的生成与装配操作,因此如能分离处理逻辑和装配操作将会使得这个过程简明清晰,这可以使得导向器生成器独立演化互不影响。
  • 什么是表示代码,Director中的代码?
  • 什么是构造代码,Builder中的代码?

3.3.1 生成器模式结构图

生成器模式结构图

3.3.2 生成器模式交互图

理解生成器模式,下面的交互图非常关键。

生成器模式交互图

3.3.3 生成器模式构建Maze

采用生成器模式构建Maze

上面是生成器模式构建Maze,下面是抽象工厂模式创建Maze,对比可发现MazeRoomDoorWall这些表示迷宫结构的类并未直接出现在构建过程中。那么日后改变那些类就不会影响目前的构建过程。

采用抽象工厂的创建过程

举例

举例1

  • 定义一个GameBuilder接口,使用其中提供的方法就能搭建出一个游戏。
  • GameABuilder和GameBBuilder是遵从GameBuilder接口的两个具体的游戏生成器,比如A是文字游戏,B是3D游戏。
  • UnitySceneReader和UnrealSceneReader可以分别读取并分析Unity和Unreal的场景文件,并使用GameBuilder接口根据读取的场景文件构建游戏。
  • 如此一来客户就有四种创建游戏的方式:
    1 读取Unity场景创建GameA
    2 读取Unity场景创建GameB
    3 读取Unreal场景创建GameA
    4 读取Unreal场景创建GameB
image.png

举例2

外语翻译,各种外语间的相互翻译。

4 工厂方法

  • 工厂方法并不仅由creator本身调用。
image.png image.png image.png
  • 与抽象工厂相比,在一个处理流程中:
    1 抽象工厂通过使用配定的实例工厂直接创建产品
    2 工厂方法通过使用定义好的产品创建方法来创建产品,并且产品的实际创建由子类实现。

相关文章

  • 19暑期学习-Day11

    (续Day10) 3 创建型模式 3.3 生成器模式(Builder) 之前的抽象工厂模式关注的重点是工厂和产品间...

  • 19暑期学习-Day19

    休息

  • 暑 第十六天:爱护、护爱!

    《迪森安全侠》刘金: ❷⓿❶⑨"迪森暑期快班车" 开启暑期 第16天 7月19日 好好学习,天天向上。好好坚持,安...

  • 20届毕业生请看过来!!!

    【重要的事情说3遍】 蚂蚁金服19年暑期实习招聘啦!!!! 蚂蚁金服19年暑期实习招聘啦!!!! 蚂蚁金服19年暑...

  • 暑期19

    好像过凌晨了,不过也还要写的呀! 上午给李老师打电话说了自己的情况,知道老师肯定会说身体最重要,但当听到的时候还是...

  • 19暑期学习-Day23

    休息

  • 19暑期学习-Day24

    微信小游戏实训

  • 19暑期学习-Day21

    继续小游戏研究 了解openid即unionid 官方文档(https://developers.weixin.q...

  • 19暑期学习-Day22

    (继续小游戏) 获取用户openid,并存储数据,下次用户登录时,取出。 题外资料 cocos creator加载...

  • 19暑期学习-Day20

    配置虚拟机 为虚拟机配置桥接网卡(比如再加一块网卡),注意界面名称那里,要选在主机已经连入网络的接点,网线或者wi...

网友评论

      本文标题:19暑期学习-Day11

      本文链接:https://www.haomeiwen.com/subject/httmkctx.html