Skip to content

Latest commit

 

History

History
53 lines (39 loc) · 1.79 KB

README.md

File metadata and controls

53 lines (39 loc) · 1.79 KB

design_patterns:设计模式与Demo

创建型模式

简单工厂模式SimpleFactory

  • 实例化不同的抽卡类、活动类
  • 切换不同的数据库连接

工厂方法模式FactoryMethod

  • 实例化不同的抽卡类、活动类
  • 切换不同的数据库连接

建造者模式Builder(生成器)

  • 游戏中创建地图包括天空、地面、背景等组成部分
  • 创建人物角色(新玩家或npc)包括人体、服装、装备等组成部分

单例模式Singleton

  • 数据库连接(避免重复连接数据库)
  • 单一日志对象logger
  • 文件锁(应用中唯一锁)
  • 全局唯一的日期时间类(不允许自己调用系统时间,只能通过日期时间类操作时间,比如获取当前时间、调整时间轴到昨天0点)
  • 全局唯一ID生成器(一个具有自动编号主键的表可以有多个用户同时使用,但数据库中不允许出现主键重复,因此该主键编号生成器必须具备唯一性)

对象池模式Pool

  • 数据库连接池
  • 套接字连接池
  • 线程池

结构型模式

适配器Adapter

  • 需要适配不同接口的方法调用时

依赖注入

  • http请求参数注入控制器
  • 配置参数注入数据库连接

门面Facade

  • 日志等涉及多个Interface实例化调用的复杂过程,可以简化为门面内的多实例调用
  • 数据库分片

行为型模式

观察者模式Observer

  • 游戏任务进度更新
  • 队友阵亡广播

代码说明

PHP

  • 实现主要参考:domnikl
  • 修改:namespace命名加上App\,减少子namespace,有代码注释。部分模式选用更贴合实际的例子,逻辑更清晰
  • 测试环境:php7+,部分使用PHPUnit做单元测试、部分用laravel的dd输出。