用于组装对象的"instanceof"链

csg*_*gui 3 java setter instanceof

我面对以下代码:

public class BaseGroup {

    private Group1 group1;
    private Group2 group2;
    private Group3 group3;

    public void setGroup (IGroup group) {

        if(group instanceof Group1) {
            setGroup1((Group1) group);
        } else if(group instanceof Group2) {
            setGroup2((Group2) group);
        } else {
            setGroup3((Group3) group);
        }
    }

    public Group1 getGroup1() {
        return group1;
    }

    public void setGroup1(Group1 group1) {
        this.group1 = group1;
    }

    public Group2 getGroup2() {
        return group2;
    }

    public void setGroup2(Group2 group1) {
        this.group2 = group2;
    }

    public Group3 getGroup3() {
        return group3;
    }

    public void setGroup3(Group3 group1) {
        this.group3 = group3;
    }

}   
Run Code Online (Sandbox Code Playgroud)

并且BaseGroup类以这种方式使用.

BaseGroup baseGroup = New BaseGroup();
basegroup.setGroup(group);
Run Code Online (Sandbox Code Playgroud)

我的问题是关于这个"instanceof"的链调用相应的setter来组装BaseGroup对象.这样做的最佳方法是什么?

Pet*_*rey 5

您可以添加方法

interface IGroup {
    public void addToGroup(BaseGroup bg);
}

class Group1 implements IGroup {
    public void addToGroup(BaseGroup bg) { bg.setGroup1(this); }
}
// etc for Group2 and 3.


IGroup group;
BaseGroup bg;
group.addToGroup(bg);
Run Code Online (Sandbox Code Playgroud)