假设我有这个 XML
<doc:document>
<objects>
<circle radius="10" doc:colour="red" />
<circle radius="20" doc:colour="blue" />
</objects>
</doc:document>
这就是它的解析方式(伪代码):
// class DocumentParser
public Document parse(Element edoc) {
doc = new Document();
doc.objects = ObjectsParser.parse(edoc.getChild("objects"));
for ( ...?... ) {
doc.objectColours.put(object, colour);
}
return doc;
}
ObjectsParser
负责解析对象位,但不知道也不应该知道文档的存在。但是,Document
颜色通过使用 与对象相关联Map
。
您会建议使用哪种模式将颜色设置返回给DocumentParser.parse
from,ObjectsParser.parse
以便将其与地图中它们所属的对象相关联?
替代方案是这样的:
<doc:document>
<objects>
<circle id="1938" radius="10" />
<circle id="6398" radius="20" />
</objects>
<doc:objectViewSettings>
<doc:objectViewSetting object="1938" colour="red" />
<doc:objectViewSetting object="6398" colour="blue" />
</doc:objectViewSettings>
</doc:document>
丑陋!