设计模式学习之简单工厂模式(java)

时间:2020-12-06 20:29:09

java中我们要或得一个对象就要使用new来生产一个对象,想想如果我们要new很多个对象,但是这些对象又有很大的相似性,我们单纯使用new来生成对象的话会有很多对象会成为垃圾对象,所以我们的先辈们帮我们想到了工厂模式。今天首先学习简单工厂模式:

假如有一个工厂专门生成car,我们叫他carFactory ,而我们有两种车型分别是BMW 和AUDI,我们叫他BMWCar和AudiCar,但是我们发现Car有着很高的相似性,那我们就用java的接口抽象出一个Car

public interface Car {
//一辆车可以运行
public void run();

}
所有的车类都要实现这个接口

1.BMWCar

public class BMWCar implements Car{

public void run() {
System.out.println("开着bmw飞奔而去!!!");
}

}

2.AudiCar 

public class AudiCar implements Car{

public void run() {
System.out.println("开着audi飞奔而去");
}

}
现在我们要定义一个简单工厂来生成car ,我们叫他simpleFactory

public class SimpleFactory {

public Car createCar(String carType){
Car car = null;
if(carType=="BMW"){
car = new BMWCar();
}else if(carType=="Audi"){
car = new AudiCar();
}
return car;
}

}

让我们的carFactory来生成我们的car了

public class CarFactory {
private Car car;
SimpleFactory simpleFactory;

public CarFactory(SimpleFactory simpleFactory){
this.simpleFactory = simpleFactory;
}

public Car createCar(String carType){
Car car = null;
car = this.simpleFactory.createCar(carType);
return car;
}

}
现在要让我们的car跑起来了

public class Main {
public static void main(String[] args){
System.out.println("我要一辆bmw....");
SimpleFactory simple = new SimpleFactory();
CarFactory carFactory = new CarFactory(simple);
carFactory.createCar("BMW").run();
System.out.println("BMW生产完成");
System.out.println("我要一辆Audi....");
carFactory.createCar("Audi").run();
System.out.println("Audi生产完成");

}
}

简单工厂模式就是这样的。来看看我们的车出来了

我要一辆bmw....
开着bmw飞奔而去!!!
BMW生产完成
我要一辆Audi....
开着audi飞奔而去
Audi生产完成