동일한 인터페이스를 구현하는 여러 클래스가 있습니다. 이러한 모든 클래스의 개체는 기본 클래스에서 인스턴스화되어야합니다. 나는이 일을 우아한 방식으로 할 수있는 방식으로하려고합니다 (나는 열거 형을 통해 생각했습니다). 예제 코드 :-
public interface Intr {
//some methods
}
public class C1 implements Intr {
// some implementations
}
public class C2 implements Intr {
// some implementations
}
...
public class Ck implements Intr {
// some implementations
}
public class MainClass {
enum ModulesEnum {
//Some code here to return objects of C1 to Ck
FIRST {return new C1()},
SECOND {return new C2()},
...
KTH {return new Ck()};
}
}
이제 위의 예에서 클래스 C1의 새 객체 인스턴스를 Ck로 가져올 수있는 우아한 방법에 대해 설명합니다. 또는 enum 대신 다른 더 나은 메커니즘도 높이 평가됩니다.
enum ModulesEnum {
FIRST(new C1()), SECOND(new C2()); // and so on
private ModulesEnum(Intr intr) { this.obj = intr; }
private Intr obj;
public Intr getObj() { return obj; }
}
도움이되기를 바랍니다. 트릭은 모든 열거 형에 구현을 추가하는 것입니다. 객체에 액세스하려면 getter를 사용하십시오.
ModulesEnum.FIRST.getObj();
귀하 Intr
와 해당 구현이 package protected
이면 ModulesEnum
공개로 설정하여 구현을 노출 할 수 있습니다 . 이렇게하면 구현 당 하나의 인스턴스 만 가질 수 singleton
있으므로 패턴을 명시 적으로 사용하지 않고 만들 수 있습니다 .
물론 Factory
모든 구현에 대해 여러 인스턴스를 가지려는 경우에도를 사용할 수 있습니다 .
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다