我的场景:考虑两个类class SubGroup,和 class Group。我不希望其他类在SubGroup's没有 的情况下创建对象Group,因为SubGroups没有Group. 但是,
Group可以没有任何SubGroup. 此外,Group可以包含多个SubGroup's.
class SubGroup{
private SubGroup(int arg){
}
}
class Group{
List<SubGroup> list;
Group(int param){
list = new List<SubGroup>();
}
SubGroup createChild(int args){
return new SubGroup(int args); // I need to access SubGroups constructor?? (without using inheritance).
}
}
class C{
Group b = new Group(param);
SubGroup a = b.createChild(args); // since constructor is not visible here. bcz, SubGroup will not exist without Group.
}
我已经尝试过:
我可以让 Group 从 SubGroup 继承并使 SubGroup 构造函数成为受保护的,但这说明了is-a关系,即每个 Group 都是一个 SubGroup。但实际上并非如此。
此外,我想要一个 arg 来创建一个子组,但在创建组期间我没有子组的参数,因此我不能使用继承。
内部类:内部类无济于事,因为我有SuperGroup,SubGroup,MicroGroup很多层。实际上这是一个金融项目,我有Account,AccountHead,SubGroup,Group等等。所以也可能会创建内层。这会降低可读性。
我如何在 C# 中实现?