2
내가 개체를 초기화하기 위해 공장 패턴을 사용하고
public class Factory
{
@Autowired
private HandlerOne handlerOne;
@Autowired
private HandlerTwo handlerTwo;
public <T extends Handler> T createHandler(Class<T> type) {
switch(type.getSimpleName()){
case "HandlerOne":
return type.cast(handlerOne.handle());
}
}
그리고 이것이 내가 공장 자체를 사용하는 방법입니다 :
handlerFactory.createHandler(HandlerOne.class);
모든 핸들러는 별도의 패키지에 위치를 com.mydomain.project.Handlers
X 처리기 구현이있는 경우, 공장에서 X 변수를 만들어야하며 이것이 좋지 않다고 생각합니다. 이 과정을보다 쉽게하기 위해 적용 할 수있는 기존 패턴이 있습니까?
공장 패턴의 책임은 새로운 인스턴스를 구축하는 것입니다. 새 인스턴스를 구성하지 않고 인스턴스 만 초기화합니다. 팩토리가 아무것도 생성하지 않기 때문에 여기서 패턴을 남용합니다. ** 팩토리에서 X 변수를 만들어야하고, 이것이 나쁘다고 생각합니다. **, 아무것도 만들지 않으므로 패턴 위반입니다. 당신은 무엇을하고, 초기화하거나 창조하고 싶습니까? –
@PeterRader .handle() 메서드는 새 객체 (EventHandlerOne)를 생성합니다. 완전히 다른 두 개의 객체 인 HandlerOne과 EventHandlerOne이 있습니다. – i712345
아하! Factory 클래스는 아무 것도 생성하지 않고, 인스턴스를 생성하는 handle-method입니다. 그러므로 handle-method는'factory method pattern'을 완성합니다. 귀하의 공장은 실제 공장이 아닙니다. –