您是否问过自己,这些课程是否真的有相同的意图?如果一个类比另一个类更通用,则它将是GenericClass,MoreGenericClass和MostGenericClass。想象一下,一个类的每个类型参数都会为该类添加一个新维度,因此可能有助于询问它是什么维度。
让我们举个例子:
Container<Thing>
MetricContainer<Thing, Metric>
MetricTransportableContainer<Thing, Metric, Transport>
我知道,这不是最好的示例,但是非常具有表现力,可以显示三个维度:
- 内部尺寸,它可以加载什么
- 公制尺寸,只能通过事物计数或通过平方度量,立方容量或重量来加载度量
- 外部尺寸,可以在其中加载。
因此,您可以为汽车运输建模:
Container<Cars>
MetricContainer<Cars, CountMetric>
MetricTransportableContainer<Cars, CountMetric, Ship>
液体运输:
Container<Fluid>
MetricContainer<Fluid, Volume>
MetricTransportableContainer<Fluid, Volume, Shelf>
能源运输:
Container<Energy>
MetricContainer<Energy, ElectricPower>
MetricTransportableContainer<Energy, ElectricPower, Box>
糖,谷物的运输:
Container<CrumblyMaterial>
MetricContainer<CrumblyMaterial, Weight>
MetricTransportableContainer<CrumblyMaterial, Weight, Silo>
哦,真令人惊讶:a List<T>
具有一个维,它表示列表可以容纳的内容;这是一个Map<T, S>
具有两个维度的,分别代表地图可以容纳的内容和访问键。