2021SC@SDUSC
AttributeSource
一个AttributeSource中包含着一个由不同AttributeImpl组成的列表,以及添加和获取它们的一些方法。
在同一个AttributeSource实例中 每个属性只有一个单实例。AttributeSource通过AttributeFactory来创建AttributeImpl的实例。通过State来标示每个AttributeImpl的状态。
private final Map, AttributeImpl> attributes;
private final Map, AttributeImpl> attributeImpls;
上述两个成员保存了两种映射关系,
1.AttributeImpl实例对应实现的所有Attribute接口,都可以映射到该 AttributeImpl实例;
2.AttributeImpl实例对应实现的所有子类对该 AttributeImpl实例的映射。
设计这两个映射关系的目的是在该AttributeSource实例中对每个Attribute和AttributeImpl保证只有一个 AttributeImpl实例,换句话说,当用具体Attribute或者具体AttributeImpl获取其对象实例时,不会每次都新建实例,而是 首次时建立,其后只返回以前建立的。