介绍
核心作用
分类
- 简单工厂模式也叫静态工厂模式,就是工厂类一般是使用静态方法,通过接收的参数不同来返回不同的对象实例
- 对于增加新产品(新功能)无能为力!不修改代码的话,是无法扩展的。不满足开闭原则
Car 接口
```java package factory.simple;
/**
- @author SIMBA1949
@date 2019/6/6 10:49 */ public interface Car {
Audi 类实现 Car 接口
```java package factory.simple;
/**
- @author SIMBA1949
- @date 2019/6/6 10:50
*/
public class Audi implements Car {
public void run() {
} } ```System.out.println("audi running");
Lamborghini 类实现 Car 接口
```java package factory.simple;
/**
- @author SIMBA1949
- @date 2019/6/6 10:51
*/
public class Lamborghini implements Car {
public void run() {
} } ```System.out.println("Lamborghini running");
简单工厂 SimpleFactory
```java package factory.simple;
/**
- 简单工厂模式(静态工厂模式) *
- @author SIMBA1949
@date 2019/6/6 10:42 */ public class SimpleFactory {
public static Car buildCar(String carType){
if ("audi".equalsIgnoreCase(carType)){
return new Audi();
}else if("lamborghini".equalsIgnoreCase(carType)){
return new Lamborghini();
}
return null;
工厂方法模式
抽象工厂接口
```java package factory.method;
/**
- @author SIMBA1949
@date 2019/6/6 11:04 */ public interface MethodFactory {
Car 接口
```java package factory.method;
/**
- @author SIMBA1949
@date 2019/6/6 10:49 */ public interface Car {
Audi 类实现 Car 接口
```java package factory.method;
/**
- @author SIMBA1949
- @date 2019/6/6 10:50
*/
public class Audi implements Car {
public void run() {
} } ```System.out.println("audi running");
AudiFactory 工厂类实现抽象工厂接口
```java package factory.method;
/**
- @author SIMBA1949
- @date 2019/6/6 11:04
*/
public class AudiFactory implements MethodFactory {
public Car buildCar() {
} } ```return new Audi();
Lamborghini 类实现 Car 接口
```java package factory.method;
/**
- @author SIMBA1949
- @date 2019/6/6 10:51
*/
public class Lamborghini implements Car {
public void run() {
} } ```System.out.println("Lamborghini running");
Lamborghini 工厂类实现抽象工厂接口
```java package factory.method;
/**
- @author SIMBA1949
- @date 2019/6/6 11:04
*/
public class LamborghiniFactory implements MethodFactory {
public Car buildCar() {
} } ```return new Lamborghini();
Client 测试
```java package factory.method;
/**
- @author SIMBA1949
- @date 2019/6/6 11:05
*/
public class MethodFactoryClient {
public static void main(String[] args) {
} } ```Car audi = new AudiFactory().buildCar();
Car lamborghini = new LamborghiniFactory().buildCar();