类型对象模式
一种软件设计模式,用对象而非子类来表示同一概念的不同变体。核心思想是创建「类型类」承载配置,让主类持有类型实例引用,从而避免类继承体系膨胀,新增变体只需实例化新对象。
时间轴 (近 90 天)
类型对象模式的核心思想是用对象而非编程语言的类型系统来表示变化,让主类持有一个指向类型实例的引用
类型对象模式最早由 Ralph Johnson 和 Bobby Woolf 在《Pattern Languages of Program Design 3》中系统阐述
继承表达 is-a 关系,枚举表达'有一个套餐类型枚举值',类型对象表达 has-a 关系
类型对象模式与策略模式的区别在于:策略模式封装可互换的算法,类型对象封装可互换的配置数据,两者可以叠加使用
如果变化带有数据和规则(如价格、上限、功能集合),应该考虑把变体做成对象
类型对象可用于游戏开发,例如用一个 MonsterType 对象描述哥布林属性,所有哥布林实例引用同一类型对象
类型对象模式与协议结合体现了'组合优于继承'原则:用 has-a 关系管理配置变体,用结构多态管理行为变体
若套餐配置固定且只在部署时变化,可在独立的 plans.py 文件中定义不可变对象;若需不部署新代码即可变更,则可从数据库加载
全部知识事实 (8)
类型对象模式的核心思想是用对象而非编程语言的类型系统来表示变化,让主类持有一个指向类型实例的引用
50%待验证类型对象模式最早由 Ralph Johnson 和 Bobby Woolf 在《Pattern Languages of Program Design 3》中系统阐述
50%待验证继承表达 is-a 关系,枚举表达'有一个套餐类型枚举值',类型对象表达 has-a 关系
50%待验证类型对象模式与策略模式的区别在于:策略模式封装可互换的算法,类型对象封装可互换的配置数据,两者可以叠加使用
50%待验证如果变化带有数据和规则(如价格、上限、功能集合),应该考虑把变体做成对象
50%待验证类型对象可用于游戏开发,例如用一个 MonsterType 对象描述哥布林属性,所有哥布林实例引用同一类型对象
50%待验证类型对象模式与协议结合体现了'组合优于继承'原则:用 has-a 关系管理配置变体,用结构多态管理行为变体
50%待验证若套餐配置固定且只在部署时变化,可在独立的 plans.py 文件中定义不可变对象;若需不部署新代码即可变更,则可从数据库加载
50%