模板是一个参数化的协作,并有表示何时使用该协作的标线。参数可以被不同的值替代从而产生不同的协作。参数通常为类指定槽。当模板实例化时,它的参数受限于类图中的实际类或受限于更大的协作中的角色。
模板用一个虚线椭圆表示,椭圆用标记有角色名字的虚线与每个类联系。例如,图 8-5 表示摘自 [Gamma-95] 的 Observer 模板的使用。在这个模板的使用中, CallQueue 替代 Subject 角色, SlidingBarlcon 替代 handler 角色。
模板可以出现在分析、结构设计、详细设计和具体实现等不同层次中,这是重用经常出现的结构的一种方法。 图 8 – 5 表示了 Observer 模板的使用。

图 8–5 模板的使用