一、目的
能够为对象动态的添加属性,并且保证强类型语言的类型安全。
二、解释
抽象文档模式可以处理额外的非静态属性。 此模式使用特征概念来实现类型安全并将不同类的属性分离到一组接口中。
以汽车举例,刚开始汽车制造商并不知道需要多少零件。等到汽车建造完毕才知道使用了哪些零件。而这些零件是在必要时才添加进去的。 简单地说,抽象文档模式允许在对象不知道的情况下将属性附加到对象。
三、类关系图
Docment 接口
提供了put方法编辑属性,get方法获取属性,children方法遍历子文档。
AbstractDocument 抽象类
定义Document 接口中方法的基本实现。
HasParts、HasType、HasPrice、HasModel 接口
四类子文档,分别是零件、类型、价格、型号。
Car、Part 类
具体业务类,汽车、零部件
四、总结
抽象文档模式允许开发人员在非类型化树结构中存储变量,并使用类型化视图对文档进行操作。可以在不影响内部文档结构的情况下创建视图的新视图或替代实现。
这样做的优点是系统更松散耦合,但它也增加了反射错误的风险,因为属性的继承类型并不总是确定的。