简单工厂模式又叫静态工厂模式,是一种创建对象实例的设计模式。通过对象创建工厂根据不同的创建请求创建不同的类对象。将不同对象的创建工作集中到一个创建工厂来完成。
简单工厂模式类图:
[img]http://dl.iteye.com/upload/attachment/364515/f5d9a2e8-0f93-31b0-bb71-33c0e00509f4.jpg[/img]
具体实现代码示例:
对象接口:
具体对象Apple :
具体对象Pear :
对象工厂+测试类:
说明:这里以简单的创建Apple和Pear对象的工厂为例来示范简单工厂的创建对象过程,当然 choice可以用其他方式触发来代替了。
简单工厂方法模式的优点在于把对象创建的行为都集中到了工厂来进行,方便了对对象创建的管理。
缺点在于:代码的耦合性还是太高,不太满足开闭原则。由于所有的对象都要在这个具体工厂来创建,这样每一次新增新类型对象的话,都要对对象工厂代码做出修改,在swich语句中添加一个分支。
简单工厂模式类图:
[img]http://dl.iteye.com/upload/attachment/364515/f5d9a2e8-0f93-31b0-bb71-33c0e00509f4.jpg[/img]
具体实现代码示例:
对象接口:
public interface Fruit {
String getFruitName();
}
具体对象Apple :
public class Apple implements Fruit{
@Override
public String getFruitName(){
// TODO Auto-generated method stub
return "This is apple";
}
}
具体对象Pear :
public class Pear implements Fruit {
@Override
public String getFruitName() {
// TODO Auto-generated method stub
return "This is pear";
}
}
对象工厂+测试类:
public class SimpleFactory {
public static Fruit getInstance(int choice){
switch(choice){
case 1:
return new Apple();
case 2:
return new Pear();
default:
return null;
}
}
public static void main(String[]args){
System.out.println(SimpleFactory.getInstance(1).getFruitName());
System.out.println(SimpleFactory.getInstance(2).getFruitName());
}
}
说明:这里以简单的创建Apple和Pear对象的工厂为例来示范简单工厂的创建对象过程,当然 choice可以用其他方式触发来代替了。
简单工厂方法模式的优点在于把对象创建的行为都集中到了工厂来进行,方便了对对象创建的管理。
缺点在于:代码的耦合性还是太高,不太满足开闭原则。由于所有的对象都要在这个具体工厂来创建,这样每一次新增新类型对象的话,都要对对象工厂代码做出修改,在swich语句中添加一个分支。