在《来源于WCF的设计模式:可扩展对象模式》我通过一个简单的例子介绍了基于IExtensibleObject<T>和IExtension<T>这两个接口为核心的“可扩展对象模式”。在那篇文章中,我是通过编程的方式来应用扩展到扩展对象的。其实,如何能够通过配置的方式来定义扩展,这个所谓的“可扩展对象模式”将会发挥更大的威力。[源代码从这里下载]
目录:
一、将XxxBuilder定义在配置中
二、ExtensionConfigurationElement<T>和ExtensionNameTypeElementCollection<T>
三、XxxBuilder的配置
四、RoomFactory
为了给大家对基于配置的扩展有一个初步的印象,我们同样先通过一个具体的例子看看最终实现的效果。同样采用上篇中关于“创建房间”的例子,不过为了真正的展示配置的作为,我们为代表房间构成元素(墙、窗户和门)的类型添加相应的属性。其中Materials属性代表门的材质,Width和Height代表窗户的长和宽,而Color则代表强的颜色。
class Door
2: {
string Materials { get; set; }
4: }
5:
class Window
7: {
int Width { get; set; }
int Height { get; set; }
10: }
11:
class Wall
13: {
public Color Color { get; set; }
15: }