1.定义:简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。顾名思义工厂就是生产东西的,有原料(参数),模子(对象)就能生产出很多个具有相同功能的对象啦。它不属于GOF的23种设计模式,但现实中却经常会用到
2.组成:
这个模式本身很简单而且使用在业务较简单的情况下。一般用于小项目或者具体产品很少扩展的情况(这样工厂类才不用经常更改)。
它由三种角色组成:
工厂类角色:这是本模式的核心,含有一定的商业逻辑和判断逻辑,根据逻辑不同,产生具体的工厂产品。如例子中的Driver类。
抽象产品角色:它一般是具体产品继承的父类或者实现的接口。由接口或者抽象类来实现。如例中的Car接口。
具体产品角色:工厂类所创建的对象就是此角色的实例。在java中由一个具体类实现,如例子中的Benz、Bmw类。
3.UML
来用类图来清晰的表示下的它们之间的关系:
4.应用:
- //抽象产品
- abstract class Car{
- private String name;
- public abstract void drive();
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- }
- //具体产品
- class Benz extends Car{
- public void drive(){
- System.out.println(this.getName()+"----go-----------------------");
- }
- }
- class Bmw extends Car{
- public void drive(){
- System.out.println(this.getName()+"----go-----------------------");
- }
- }
- //简单工厂
- class Driver{
- public static Car createCar(String car){
- Car c = null;
- if("Benz".equalsIgnoreCase(car))
- c = new Benz();
- else if("Bmw".equalsIgnoreCase(car))
- c = new Bmw();
- return c;
- }
- }
- //老板 --》客户端
- public class BossSimplyFactory {
- public static void main(String[] args) throws IOException {
- //老板告诉司机我今天坐奔驰
- Car car = Driver.createCar("benz");
- car.setName("benz");
- //司机开着奔驰出发
- car.drive();
- }
-
- http://www.cnblogs.com/wangjq/archive/2012/07/02/2558255.html