设计模式之简单工厂模式java示例
package com.test.simplefactory;public class PersonFactory {public Person getPerson(String name){ if("america".equals(name)) { return new America(); } else if ("chinese".equals(name)) { return new Chinese(); } else { return null; }}}?
抽象产品角色:person.java
package com.test.simplefactory;public interface Person {public String sayHello(String name);public String sayGoodbye(String name);}具体产品角色:Chinese.javapackage com.test.simplefactory;public class Chinese implements Person {public String sayGoodbye(String name) { // TODO Auto-generated method stub return "再见,"+name;}public String sayHello(String name) { // TODO Auto-generated method stub return "你好,"+name;}}America.javapackage com.test.simplefactory;public class America implements Person {public String sayGoodbye(String name) { // TODO Auto-generated method stub return "good bye,"+name;}public String sayHello(String name) { // TODO Auto-generated method stub return "hello,"+name;}}?
package com.test.simplefactory;public class Client {/** * @param args *//** * 简单工厂模式的构成 * 1、工厂类角色:担任这个角色的是简单工厂模式的核心,含有与应用紧密相关的商业逻辑。 * 工厂类在客户端的直接调用下创建产品对象,他往往由一个具体类实现。 * 2、抽象产品角色:担任这个角色的类是简单工厂模式所创建的对象的父类,或他们共同拥有的接口。抽象产品角色可以用一个接口或者抽象类实现。 * 3、简单工厂模式所创建的任何对象都是这个角色的实例,具体产品角色由一个具体类实现。 */public static void main(String[] args) { // TODO Auto-generated method stub/* Person chinese = new Chinese(); System.out.println(chinese.sayHello("张三")); System.out.println(chinese.sayGoodbye("张三")); Person america= new America(); System.out.println(america.sayHello("Tom")); System.out.println(america.sayGoodbye("Tom"));*/ //采用工厂模式后,我们不在关心Chinese类和America类,只需要传入相应参数即可。 PersonFactory factory = new PersonFactory(); Person chinese = factory.getPerson("chinese");//工厂类负责生成一个具体对象 System.out.println(chinese.sayHello("张三")); System.out.println(chinese.sayGoodbye("张三")); Person america = factory.getPerson("america");//工厂类负责生成一个具体对象 System.out.println(america.sayHello("Tom")); System.out.println(america.sayGoodbye("Tom")); }}?