2010-12-17 2 views
0

내가 지금처럼 정적 팩토리 객체에서 개체를 만들 수 있습니다 ID 정적 팩토리 메소드를 호출정적 팩토리 메소드에서 공장을 만든 다음

<bean id="myFactory" class="com.myco.MyFactory1" factory-method="createFactory"> 
    <constructor-arg value="aString" /> 
</bean> 

지금 내가 ID를 사용하려면 'myFactory'전화 그것의 정적 'createFactory'메서드. 유효하지 않은 자바 코드입니다

ObjectFactory objectFactory = MyFactory.createFactory().createFactory(); //Last createFactory method returns type ObjectFactory 
+3

을 이해하지 못했습니다. MyFactory.createFactory(). createFactory()'와 같은 것을 원하십니까? – Bozho

+0

예, MyFactory.createFactory(). createFactory(). 이를 반영하기 위해 질문을 업데이트하겠습니다. – Quaternion

+1

어쩌면 당신이 성취하려는 것을 명확히해야 할 필요가 있습니다. createFactory가 팩토리를 생성하면, 왜 다른 팩토리를 만들고 싶습니까? 이미 가지고 있니? – Jay

답변

2

bean 인스턴스에서 factory 메소드를 호출 할 수 있지만,이 경우 factory 메소드는 정적이어서는 안됩니다.

<bean id="myFactory2" factory-bean="myFactory" factory-method="createFactory"> 

</bean> 

어쨌든, 나는 다른 것에 동의합니다. 요구 사항을 자세히 지정해야합니다. 첫 번째 com.myco.MyFactory1이 com.myco.MyFactory1의 인스턴스를 반환하면 createInstance 메소드를 호출하는 것이 타당하지 않습니다. 동일한 클래스가 리턴 될 때, 동일한 정적 메소드가 호출됩니다.

첫 번째 팩토리 com.myco.MyFactory1이 다른 클래스의 인스턴스를 반환하면 위에 나온 코드를 사용하여 팩토리 메소드를 호출 할 수 있습니다. 그러나이 경우 정적이 아니어야 함을 기억하십시오.

UPDATE :

그것은 다음과 같이 다른 빈 인스턴스에 정적 메소드를 호출하여 새 인스턴스를 만들 수 있습니다.

<bean id="myFactory2" class="org.springframework.beans.factory.config.MethodInvokingFactoryBean"> 
    <property name="targetObject"><ref local="myFactory"/></property> 
    <property name="targetMethod"><value>createFactory</value></property> 
</bean> 

그럼에도 불구하고 디자인을 재고해야합니다.

+0

+1. 'factory-bean'에 대해서 잊어 버렸습니다 :) – Bozho

+0

공장 빈을 시험해 보았지만 분명히 맞지 않았습니다. – Quaternion

+0

이 질문에 대한 답변은 불행히도 내 질문에 잘못되었습니다. 이제 static factory 메소드에서 Create factory를 요청한 다음 static factory 메소드를 호출해야합니다. 제공하신대로 오류가 있습니다. – Quaternion

2

: 같은 자바 뭔가

. MyFactory에는 동일한 이름을 가진 두 개의 메소드 (하나는 static이고 하나는 비 정적 임)가 있다고 가정합니다. 그리고 이것은 불가능합니다.

이 경우 당신은 두 번 같은 정적 메소드를 호출하는, 또는 다른 객체의 메소드를 호출 - 글쎄, 당신은 쉽게로, 두 개의 호출을 병합/한 번만 호출 할 수 있습니다 말 createObjectFactory()

또한,을 다시 차례 차례로 다른 공장을 만드는 공장을 만드는 요소를 만드는 것은 이상한 것처럼 보입니다. 나쁜 디자인 (지나친 디자인)처럼 들립니다.

+0

MyFactory가 정말로 필요한 객체를 만드는 정적 메서드를 가진 FooFactory를 인스턴스화 할 수 없습니까? – Quaternion

+0

예, 그것에 관한 업데이트가 포함되었습니다. 3 개의 공장을 갖는 것은 틀리다. – Bozho

관련 문제