使用静态工厂方法进行条件调用

时间:2018-01-30 22:04:38

标签: java constructor overloading static-factory

这是我的项目结构。我正在尝试使用静态工厂函数来检查对象,然后执行一些操作。我按照这个过程。

家长班:

public abstract class Parent {

    protected static Child1DTO ch1;
    protected static Child2DTO ch2;

    public Parent(Child1DTO ch1) {
        this.ch1 = ch1;
    }

    public Parent(Child2DTO ch2) {
        this.ch2 = ch2;
    }

    protected Parent() {

    }

    public static Child1DTO getCh1() {
        return ch1;
    }

    public static Child2DTO getCh2() {
        return ch2;
    }

    public static Class<?> childType(Object obj) {

        if (obj instanceof Child1DTO) {
                    //do something
            return Child1DTO.class;
        } else if (obj instanceof Child2DTO) {
                    //do something
            return Child2DTO.class;
        }
        return null;
    }
}

Child1DTO班级

public class Child1DTO extends Parent {

    private String fName1;
    private String lName1;

    public String getfName1() {
        return fName1;
    }
    public void setfName1(String fName1) {
        this.fName1 = fName1;
    }
    public String getlName1() {
        return lName1;
    }
    public void setlName1(String lName1) {
        this.lName1 = lName1;
    }
}

Child2DTO课程:

public class Child2DTO extends Parent{

    private String fName2;
    private String lName2;

    public String getfName2() {
        return fName2;
    }
    public void setfName2(String fName2) {
        this.fName2 = fName2;
    }
    public String getlName2() {
        return lName2;
    }
    public void setlName2(String lName2) {
        this.lName2 = lName2;
    }
}

儿童班:

public class Child extends Parent {

    public Child(Child1DTO ch1) {
        super(ch1);
    }

    public Child(Child2DTO ch2) {
        super(ch2);
    }

    public static Child test(Object obj) {

        if (obj instanceof Child1DTO) { //is this the correct way to check?
            //do something
            return new Child((Child1DTO) obj);
        } else if (obj instanceof Child2DTO) {//is this the correct way to check?

            //do something
            return new Child((Child2DTO) obj);
        }
        return null;
    }

    public static void main(String args[]) {


        if(childType(ch1).equals(ch1)){
            //do something
        }else if(childType(ch2).equals(ch2)){
            //do something
        }else{
            System.out.println("Failed!");
        }
  }

}

修改

Parent课程有一个Child课程和两个DTO Child1DTOChild2DTO

  1. 我是否需要在Parent类或Child类中实现条件检查?
  2. 如何使用构造函数实现条件检查?

0 个答案:

没有答案