名称/分类
Curiously Recurring Template Pattern,CRTP,奇异递归模板模式
别名
递归类型绑定,递归泛型
目的
允许派生组件从与派生类型兼容的基本组件继承某些功能。
解释
真实世界的例子
对于正在策划赛事的综合格斗推广活动来说,确保在相同重量级的运动员之间组织比赛至关重要。这样可以防止体型明显不同的拳手之间的不匹配,例如重量级拳手与雏量级拳手的对决。
用通俗的话来讲
大约 2 分钟
Curiously Recurring Template Pattern,CRTP,奇异递归模板模式
递归类型绑定,递归泛型
允许派生组件从与派生类型兼容的基本组件继承某些功能。
真实世界的例子
对于正在策划赛事的综合格斗推广活动来说,确保在相同重量级的运动员之间组织比赛至关重要。这样可以防止体型明显不同的拳手之间的不匹配,例如重量级拳手与雏量级拳手的对决。
用通俗的话来讲
分步构建
这是构建者模式的一个扩展,完全指导用户创建对象,没有混淆的机会。
用户体验会大大提升,因为他只能看到下一个步骤的方法,直到适当的时机才会出现构建对象的“build”方法。
使用分布构建模式当创建复杂对象的算法需要独立于组成对象的部分以及它们的组装方式,且构造过程必须允许对象有不同的表示形式,并且在此过程中顺序很重要时。
值对象
提供的对象应遵循值语义而不是引用语义。这意味着两个值对象的相等性不是基于它们的身份。只要两个值对象的值相同,即使它们不是同一个对象,它们也被认为是相等的。
现实世界例子
在一个角色扮演游戏中,有一个用于英雄属性统计的类。
这些统计属性包括力量、智慧和运气等特征。
当所有的属性都相同时,不同英雄的统计数据应被认为是相等的。
用直白的话来说
当值对象的属性有相同的值时,它们是相等的。