简单工厂模式的构成
1、工厂类角色:担任这个角色的是简单工厂模式的核心,含有与应用紧密相关的商业逻辑。工厂类在客户端的直接调用下创建产品对象,他往往由一个具体类实现。
2、抽象产品角色:担任这个角色的类是简单工厂模式所创建的对象的父类,或他们共同拥有的接口。抽象产品角色可以用一个接口或者抽象类实现。
3、具体产品角色:简单工厂模式所创建的任何对象都是这个角色的实例,具体产品角色由一个具体类实现。
工厂类角色:PersonFactory.java
抽象产品角色:person.java
测试客户端:Client.java
1、工厂类角色:担任这个角色的是简单工厂模式的核心,含有与应用紧密相关的商业逻辑。工厂类在客户端的直接调用下创建产品对象,他往往由一个具体类实现。
2、抽象产品角色:担任这个角色的类是简单工厂模式所创建的对象的父类,或他们共同拥有的接口。抽象产品角色可以用一个接口或者抽象类实现。
3、具体产品角色:简单工厂模式所创建的任何对象都是这个角色的实例,具体产品角色由一个具体类实现。
工厂类角色:PersonFactory.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.java
package 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.java
package 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;
}
}
测试客户端:Client.java
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"));
}
}