特性介绍
-
将对象实例化的过程放在工厂类中,实现创建者和调用者的分离。
-
可以用来生产同一等级结构中的任意产品(对于增加新的产品,需要修改已有代码)。
-
简单工厂模式没有遵循开闭原则,但也使用较多。
示例说明
场景描述
以汽车工厂为例
调用关系图
示例代码
/**
* 汽车类接口
*/
public interface Car {
/**
* 汽车运行方法
*/
void run();
}
/**
* 奥迪
*/
public class Audi implements Car {
@Override
public void run() {
System.out.println("奥迪车运行奔跑");
}
}
/**
* 比亚迪
*/
public class Byd implements Car {
@Override
public void run() {
System.out.println("比亚迪运行奔跑");
}
}
/**
* 汽车制造工厂(创建者)
*/
public class CarFactory {
//方式一
public static Car createCar(String type){
Car car = null;
if("Audi".equals(type)){
car = new Audi();
}else if("Byd".equals(type)){
car = new Byd();
}
return car;
}
//方式二
public static Car createAudi(){
return new Audi();
}
public static Car createByd() {
return new Byd();
}
}
/**
* 演示客户端(调用者)
*/
public class Client {
public static void main(String[] args){
Car audi1 = CarFactory.createCar("Audi");
Car audi2 = CarFactory.createAudi();
Car byd1 = CarFactory.createCar("Byd");
Car byd2 = CarFactory.createByd();
audi1.run();
byd1.run();
audi2.run();
byd2.run();
}
}