设计模式之工厂模式
# 设计模式之工厂模式
# 一、简介
创建对象时不会对客户端暴露其创建逻辑,而是通过调用一个共同的接口
# 二、实现方式
# 1、简单工厂模式(Simple Factory Pattern),又称 静态工厂方法
根据传入的参数,由工厂类动态的决定应该创建哪一个产品类
public class SimpleFactory {
public Car getCar(String name) {
if ("BMW".equalsIgnoreCase(name)) {
return new Bmw();
} else if ("Benz".equalsIgnoreCase(name)) {
return new Benz();
} else if ("Audi".equalsIgnoreCase(name)) {
return new Audi();
} else {
System.out.println("这个产品产不出来");
return null;
}
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
# 2、工厂方法模式(Factory Method Pattern)
主要有两个类,工厂父类和工厂子类,工厂父类负责提供创建产品对象的公共接口,而工厂子类负责创建具体的产品对象
测试类:
public class FactoryTest {
public static void main(String[] args) {
//1.首先先创建一个奥迪工厂出来
Factory factory = new AudiFactory();
//2.然后根据工厂得到奥迪车,具体的造车工厂交给工厂来完成
System.out.println(factory.getCar());
factory = new BmwFactory();
System.out.println(factory.getCar());
}
}
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
# 3、抽象工厂模式(Abstract Factory Pattern)
围绕一个超级工厂创建其他工厂。该超级工厂又称为其他工厂的工厂
测试类:
public class FactoryTest {
public static void main(String[] args) {
//1.先创建具体抽象工厂
AbstractFactory abstractFactory = new CarFactory();
//2.根据具体的抽象工厂得到车
Car audi = abstractFactory.getAudiCar();
System.out.println(audi.getName());
}
}
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
# 三、应用
# 1、Spring中的简单工厂模式:BeanFactory
# 2、Spring中的工厂方法模式:FactoryBean
在Spring
的getBean()
方法的逻辑中,会判断这个bean
是否是一个FactoryBean
,如果是的话,会调用FactoryBean
的getObject()
方法,最终返回的是getOjbect()
这个方法的返回值。