I have a class, something like this one (C#):
public class MyFavoriteClass { public string Name { get; set; } public string Description { get; set; } (...) public ReferencedClass1 ReferencedClass1 {get; protected set;} public ReferencedClass2 ReferencedClass2 {get; protected set;} public ReferencedClass3 ReferencedClass3 {get; protected set;} public AnotherReferencedClass1 AnotherReferencedClass1 {get; protected set;} public AnotherReferencedClass2 AnotherReferencedClass2 {get; protected set;} public AnotherReferencedClass3 AnotherReferencedClass3 {get; protected set;} } Referenced classes dont have any common ancestor class.
There are constrains:
Object (instance of MyFavoriteClass) can have setted only one of properties ReferencedClass1, ReferencedClass2 and ReferencedClass3. Others have to be null.
Same rule for AnotherReferencedClass1, AnotherReferencedClass2 and AnotherReferencedClass3.
Whats the best way to enforce these constraints? In factory pattern? Should I write nine methods in this factory? Or should i wrapp these options in another object?