3
실세계 객체를 나타내는 객체를 반환하려는 라이브러리에서 작업하고 있습니다. 이 클래스를 개발자에게 공개하여 실제 객체를 조작하고 싶지만 객체를 직접 만들지 못하게하고 싶습니다.패키지 개인 생성자를 사용하여 클래스를 만드는 방법은 무엇입니까?
예
public class World {
public static List<RealObject> getAllObjects() {
// How to create RealObject with physicalID?
}
}
public class RealObject {
private int physicalID;
public RealObject(int physicalID) {
// Undesirable, user has no knowledge of IDs
}
public void setState(int state) {
// Code using physicalID to change state
}
}
이러한 개체는 현재 생성자가없고 내 라이브러리 내에서 리플렉션과 함께 설정 개인 id
필드가 있습니다. 이것은 완벽하게 작동하지만 더 나은 해결책이 있어야한다고 생각합니다. 아마도 내 상황에서 유용한 제한은 다른 하나의 클래스에서이 객체를 구성하기 만하면된다는 것입니다.
더 좋은 솔루션이 있습니까? 그리고 그 경우 조직적인 목적으로 별도의 파일에 클래스를 가질 수 있습니까?
몇 가지 예제 코드를 추가하십시오. –
공장 패턴 사용 http://en.wikipedia.org/wiki/Factory_method_pattern – user902383
@ user902383 어떻게 문제를 해결할 수 있습니까? 여전히 사용자에게 공개 된 팩토리 메소드입니다. – Overv