工厂模式
介绍
用一个类工厂(本质是也是一个类),来创建类。
创建的类往往具备相同的功能,即实现了某个接口。
举例:
生活中的食品工厂用来生产食品,汽车工厂用来生产汽车。
食品用来食用,汽车用来驾驶。
食品是类,汽车是类,工厂也是类。
优点:便于统一制造类(不知道算不算优点)
缺点:必然会多出工厂类
举例实现
创建接口:
package factorypattern;
public interface Car {
public void run();
}
实现接口的类:
奥迪汽车
package factorypattern;
public class AudiCar implements Car {
@Override
public void run() {
System.out.println("Audi car is running");
}
}
宝马汽车
package factorypattern;
public class BWMCar implements Car {
@Override
public void run() {
System.out.println("BWM car is running");
}
}
路虎汽车
package factorypattern;
public class LandRover implements Car {
@Override
public void run() {
System.out.println("LandRover car is running");
}
}
创建工厂
可以生产汽车的工厂
package factorypattern;
public class CarFactory {
public Car getCar(String carName){
if(carName == null){
return null;
}
if(carName.equalsIgnoreCase("audi")){
return new AudiCar();
}else if(carName.equalsIgnoreCase("Bwm")){
return new BWMCar();
}else if(carName.equalsIgnoreCase("landrover")){
return new LandRover();
}
return null;
}
}
工厂运作
工厂生产汽车
package factorypattern;
public class TestFactroy {
public static void main(String[] args) {
// 造一个汽车工厂
CarFactory carFactory = new CarFactory();
// 工厂生产奥迪
Car audi = carFactory.getCar("audi");
audi.run();
// 工厂生产宝马
Car bwm = carFactory.getCar("bwm");
bwm.run();
// 工厂生产路虎
Car landrover = carFactory.getCar("landrover");
landrover.run();
}
}
运行结果
验证产品质量
Audi car is running
BWM car is running
LandRover car is running