您的位置:首页 > 其它

7.7.3:调用实例工厂方法创建Bean

2013-07-18 05:27 393 查看


Person.java :

public interface Person {
public String sayHello(String name);
public String sayGoodBye(String name);
}
Chinese.java :

public class Chinese implements Person {

@Override
public String sayGoodBye(String name) {

return name+",再见!";
}

@Override
public String sayHello(String name) {

return name+",你好";
}

}
American.java :

public class American implements Person {

@Override
public String sayGoodBye(String name) {

return name+",Good Bye !";
}

@Override
public String sayHello(String name) {

return name+",Hello !";
}

}
PersonFactory.java :

public class PersonFactory {

public Person getPerson(String ethnic){
if(ethnic.equalsIgnoreCase("chin")){
return new Chinese();
}else{
return new American();
}
}
}
bean.xml核心配置 :

<bean id="personFactory" class="com.bean.PersonFactory"/>

<bean id="chinese" factory-bean="personFactory" factory-method="getPerson">
<constructor-arg value="chin"/>
</bean>

<bean id="american" factory-bean="personFactory" factory-method="getPerson">
<constructor-arg value="ame"/>
</bean>
Test.java :

public class Test {

public static void main(String[] args) {

ApplicationContext ctx=new ClassPathXmlApplicationContext("bean.xml");
Person p1=(Person) ctx.getBean("chinese");
System.out.println(p1.sayGoodBye("tom")+p1.sayHello("tom"));
Person p2=(Person) ctx.getBean("american");
System.out.println(p2.sayGoodBye("tom")+p2.sayHello("tom"));
}

}
运行Test.java,控制台输出:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐