整体代码结构:
Person.java
package com.kinsey.woo.app.service;
public interface Person {
public void sayHello();
public void sayBye();
}
American.java
package com.kinsey.woo.app.service.impl;
import com.kinsey.woo.app.service.Person;
public class American implements Person {
@Override
public void sayHello() {
System.out.println("Hello ,I'm from USA.");
}
@Override
public void sayBye() {
System.out.println("Bye,see you in USA.");
}
}
Chinese.java
package com.kinsey.woo.app.service.impl;
import com.kinsey.woo.app.service.Person;
public class Chinese implements Person{
@Override
public void sayHello() {
System.out.println("hello, I'm from China.");
}
@Override
public void sayBye() {
System.out.println("Bye, see you in China.");
}
}
InstanceFactory.java
package com.kinsey.woo.app;
import com.kinsey.woo.app.service.Person;
import com.kinsey.woo.app.service.impl.American;
import com.kinsey.woo.app.service.impl.Chinese;
public class InstanceFactory {
private final static String CHINA = "China";
@SuppressWarnings("unused")
private final static String USA = "USA";
public Person produce(String country){
if(CHINA.equalsIgnoreCase(country)){
return new Chinese();
}else {
return new American();
}
}
}
RunMain.java
package com.kinsey.woo;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.kinsey.woo.app.service.impl.American;
import com.kinsey.woo.app.service.impl.Chinese;
public class RunMain {
public static void main(String[] args) {
ApplicationContext ctx = new ClassPathXmlApplicationContext("application.xml");
American american = ctx.getBean(American.class);
Chinese chinese = ctx.getBean(Chinese.class);
american.sayHello();
american.sayBye();
chinese.sayHello();
chinese.sayBye();
}
}
application.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="instanceFactory" class="com.kinsey.woo.app.InstanceFactory">
</bean>
<bean id="american" factory-bean="instanceFactory" factory-method="produce">
<constructor-arg value="usa" />
</bean>
<bean id="chinese" factory-bean="instanceFactory" factory-method="produce">
<constructor-arg value="china" />
</bean>
</beans>