Próbuję modelować produkty za pomocą zestawu kompleksowych atrybutów. Zwykle sklep internetowy używałby opisu tekstowego do listy atrybutów konkretnego produktu. Jednak to rozwiązanie nie jest optymalne.Alternatywy dla hierarchii głębokiego dziedziczenia?
Na przykład, poniższe linki pokazują niespójności atrybutów w opisie tekst na ten sam produkt, ale z różnych producentów:
W związku z tym wybrałem hierarchię dziedziczenia w następujący sposób:
Product
>Component
>GraphicsCard
>NvidiaGraphicsCard
Powodem tego jest, ponieważ chcę precyzyjną kontrolę nad atrybutami każdego Product
. To pozwala mi uwzględnić atrybuty specyficzne dla np. NvidiaGraphicsCard
, które nie mają zastosowania do ATiGraphicsCard
.
Należy zauważyć, że dziedziczenie pozwala, oprócz dodawania kolejnych pól do podklas, wykorzystywać polimorfizm pod względem posiadania OrderItem
posiadania odniesienia do . To jest powód, dla którego wykluczyłem kompozycję.
Czy istnieje problem z posiadaniem tak głębokiej hierarchii dziedziczenia, a jeśli tak, to czy istnieją jakieś rozwiązania lub wzorce, aby poradzić sobie z tym problemem?