定义:
- 称为静态工厂方法(Static Factory Method)模式,它属于类创建型模式。
- 在简单工厂模式中,可以根据参数的不同返回不同类的实例
优势
- 对象的创建和对象的使用实现了分离,客服端不需要了解实现细节,降低耦合度
- 当你需要什么,只需要传入一个正确的参数,就可以获取你所需要的对象,而无须知道其创建细节。
劣势:
- 不符合开闭原则,添加新产品需要修改逻辑代码
结构:
工厂角色 | 工厂核心类,负责创建具体的目标类 |
抽象目标 | 规范子类的公共属性 |
具体目标 | 实现抽象功能,一般是多个实现类,工厂类创建就是该类类的对象 |
UML图:
工厂类:
package com.project.factory.simplefactory;
import com.project.factory.methodfactory.ICar;
import com.project.factory.simplefactory.impl.Aody;
import com.project.factory.simplefactory.impl.Byd;
/**
* 简单工厂类,传入创建车型,创建相应车型,缺陷不能添加车型
* @author Administrator
*
*/
public class SimpleFactory {
public ICar createCar(String type) {
if (type.equals("奥迪")) {
return new Aody();
} else if (type.equals("比亚迪")) {
return new Byd();
}
return null;
}
}
抽象目标:
package com.project.factory.simplefactory;
/**
* 卡车接口
* @author Administrator
*
*/
public interface ICar {
/**
* 卡车奔跑
*/
public void run();
}
实现类:
package com.project.factory.simplefactory.impl;
import com.project.factory.methodfactory.ICar;
/**
* 奥迪车
* @author Administrator
*
*/
public class Aody implements ICar {
@Override
public void run() {
System.out.println("奥迪跑");
}
}
package com.project.factory.simplefactory.impl;
import com.project.factory.methodfactory.ICar;
/**
* 比亚迪车
* @author Administrator
*
*/
public class Byd implements ICar {
@Override
public void run() {
System.out.println("比亚迪跑");
}
}
测试类:
package com.project.factory.simplefactory;
import com.project.factory.methodfactory.ICar;
import com.project.factory.simplefactory.impl.Aody;
import com.project.factory.simplefactory.impl.Byd;
public class Client {
public static void main(String[] args) {
SimpleFactory factory = new SimpleFactory();
ICar car = factory.createCar("奥迪");
System.out.println(car);
}
}