Я искал в Интернете информацию, которая поможет мне решить проблему с дизайном, которая меня смущает.Я новичок в сложных ситуациях наследования, так что моё решение может быть основано на лучшем дизайне.Но, пытаясь понять, каким должен быть мой дизайн, я продолжаю думать, что мне действительно нужно унаследовать более 1 базового класса.
Мой конкретный случай касается Активов и различных типов Активов.
Начиная с Актив ...
Каждый PhysicalDevice является Активом
Каждый VirtualDevice является Актив
Каждый Сервер является Активом
Каждый PhysicalServer должен быть одновременно PhysicalDevice и Сервер
Каждый VirtualServer должен быть одновременно VirtualDevice и Сервер
Каждое NetDevice представляет собой PhysicalDevice
Каждое StorageArray представляет собой PhysicalDevice
OneЯ полагаю, что решение состоит в том, чтобы дублировать код Server для PhysicalServers и VirtualServers , однако я чувствую, чтоs идет вразрез с тем, что я пытаюсь сделать, что наследуется.
Они должны быть отдельными классами, потому что каждый из типов будет иметь свойства и методы.Например, Сервер будет иметь OSCaption, Memory, Procs и т. Д. PhysicalDevice будет иметь такие вещи, как Location, Serial, Vendor и т. Д. И VirtualDevice будет иметь ParentDevice, State, VHDLocation и т. Д.
Если наследование является линейным, я сталкиваюсь с проблемой невозможности точного описания этих типов.
Что-то, что кажется интригующим, - это интерфейсы.Кажется, что я могу определить все базовые классы как интерфейсы и реализовать их в моих основных классах по мере необходимости.но я просто не уверен в том, что это означало бы, если бы я это сделал. Например,
, что-то вроде ... PhysicalServer : IAsset : IServer : IPhysical
Я нахожусь в глубокой воде, поэтому на самом деле просто ищу советы или рекомендации.