示例:使用事物、事物模板或事物形态
何时使用事物模板?
例如:如果您的公司出租智能互联汽车,则可以通过将 GenericThing 事物模板用作基本模板来创建 Vehicle 事物模板。根据 Vehicle 事物模板,创建 Car 和 Truck 事物模板。根据 Car 模板,创建 Electric Car 事物模板和 Internal Combustion Car 事物模板。根据 Truck 事物模板,创建 Tanker Truck 事物模板和 Refrigerated Truck 事物模板。创建可实现这些事物模板的单个事物。下图说明了这种情况:
何时使用事物形态?
事物模板可实现零个、一个或多个事物形态。
公司拥有冷藏车 (基于 Truck 事物模板) 和冷藏型自动售货机 (基于 Vending Machine 事物模板)。这两个实体具有公用属性,例如工作温度、容量、功耗和热输出等。最好在 Refrigerated Unit 事物形态中定义此行为,而无需定义两次。这种事物形态可由两个实体重用。
事物、事物模板和事物形态是如何协同工作的?
下图展示了事物模板、事物形态和事物的协同工作方式。请注意以下几点:
• VehicleTemplate 事物模板将系统事物模板 RemoteThing 实现为基本模板,并且会继承 AssetShape 和 EngineShape 事物形态。因此,VehicleTemplate 具有 RemoteThing 事物模板以及 AssetShape 和 EngineShape 事物形态的所有属性和服务。
• PassengerCarTemplate、TruckTemplate 和 BusTemplate 事物模板将 VehicleTemplate 事物模板实现为基本模板。因此,它们会继承 VehicleTemplate 事物模板的所有属性和服务。
• TruckTemplate 和 BusTemplate 事物模板会继承 TrackerShape 事物形态。除了 VehicleTemplate 事物模板的属性外,它们还具有 TrackerShape 事物形态的属性。
• 事物 C1、C2、...、Cn 将 PassengerCarTemplate 实现为基本模板。
• 事物 T1、T2、...、Tn 将 TruckTemplate 实现为基本模板。
• 事物 B1、B2、...、Bn 将 BusTemplate 实现为基本模板。