【发布时间】:2012-03-07 13:56:18
【问题描述】:
我在网上查找了可以帮助我解决令我困惑的设计问题的信息。我对复杂的继承情况不熟悉,所以我的解决方案实际上可以植根于更好的设计。但在试图弄清楚我的设计应该是什么时,我一直认为我真的只需要继承多个基类。
我的具体案例涉及资产和不同类型的资产。
从资产开始...
每个PhysicalDevice都是资产
每个 VirtualDevice 都是一个资产
每个服务器都是资产
每个 PhysicalServer 都需要同时是 PhysicalDevice 和 Server
每个 VirtualServer 都需要是 VirtualDevice 和 Server
每一个NetDevice都是一个PhysicalDevice
每个 StorageArray 都是一个 PhysicalDevice
我想一个解决方案是为 PhysicalServers 和 VirtualServers 复制 Server 代码,但是,我觉得这与我的想法背道而驰努力去做,也就是继承。
它们需要是单独的类,因为每种类型都有属性和方法。例如,Server 会有 OSCaption、Memory、Procs 等。PhysicalDevice 会有 Location、Serial、Vendor 等。而 VirtualDevice 会有有 ParentDevice、State、VHDLocation 等。
如果继承是线性的,那么我会遇到无法准确描述这些类型的问题。
似乎很有趣的是接口。看来我可以将所有基类定义为接口,并根据需要在我的主类中实现它们。但是,我只是不确定如果我这样做会产生什么影响。
例如,类似... PhysicalServer : IAsset : IServer : IPhysical
我在深水中,所以我真的只是在寻找建议或指导。
【问题讨论】:
-
请不要在标题末尾添加“C#”。这就是标签的用途。
标签: c# class inheritance interface multiple-inheritance