设计模式 之 工厂模式
1. 什么是工厂模式(Factory Pattern)
工厂通常是一个用来创建其他对象的对象. 工厂模式可以根据不用的参数来实现不同的分配方案和创建对象.在工厂模式中工厂对象会屏蔽创建对象的细节, 并且所创建的对象也都是实现了同一个接口的.
工厂模式分类
- 普通工厂模式
- 多个工厂方法的模式
- 静态工厂方法模式(最常用)
2. 普通工厂模式
示例代码如下 :
- 共同接口
public interface IHuman {
public void eat();
public void sleep();
public void beat();
}
- 实体类
public class ImplFamale implements IHuman {
@Override
public void eat() {
System.out.println(getClass().getName() + " eat");
}
@Override
public void sleep() {
System.out.println(getClass().getName() + " sleep");
}
@Override
public void beat() {
System.out.println(getClass().getName() + " beat");
}
}
public class ImplMale implements IHuman {
@Override
public void eat() {
System.out.println(getClass().getName() + " eat");
}
@Override
public void sleep() {
System.out.println(getClass().getName() + " sleep");
}
@Override
public void beat() {
System.out.println(getClass().getName() + " beat");
}
}
- 工厂类
public class HumanFactory{
public IHuman createHuman(String type){
switch (type) {
case "male":
return new ImplMale();
case "famale":
return new ImplFamale();
default:
return null;
}
}
}
- 测试类
public class FactoryTest {
public static void main(String[] args) {
HumaFactory humaFactory = new HumaFactory();
IHuman male = humaFactory.createHuman("male");
IHuman famale = humaFactory.createHuman("famale");
male.eat();
famale.eat();
}
}
3. 多个工厂方法
这种方式可以避免普通工厂方法中字符串输入不匹配时出现的问题.
- 工厂类
public class HumanFactory{
public ImplMale createMale(){
return new ImplMale();
}
public ImplFamale createFamale(){
return new ImplFamale();
}
}
4. 静态工厂方法
这种方式不用创建工厂类实体对象, 这是最常用的一种方式
- 工厂类代码
public static ImplMale sCreateMale(){
return new ImplMale();
}
public static ImplFamale sCreateFamale(){
return new ImplFamale();
}
5. 总结
出现了大量的产品需要创建,并且具有共同的接口时,可以通过工厂方法模式进行创建, 工厂方法的三种方式中最常用的就是静态工厂方法.