介绍
工厂模式属于创建对象模式,提供给客户端共同创建对象的接口,不暴露创建对象的逻辑。
统一生产对象,便于管理和解耦。
例如:想要一辆汽车,直接去4s店提货,而不需要关心汽车如何造出来的。
实现
image.png1、创建一个Car接口
public interface Car {
public void run();
public void stop();
}
2、创建实体类
public class Taxi implements Car {
@Override
public void run() {
System.out.println("打表计价中");
}
@Override
public void stop() {
System.out.println("本次费用xx元");
}
}
public class Bus implements Car {
@Override
public void run() {
System.out.println("车辆行人请注意");
}
@Override
public void stop() {
System.out.println("xxx站到了");
}
}
public class Sedan implements Car {
@Override
public void run() {
System.out.println("一路向西去大理");
}
@Override
public void stop() {
System.out.println("抛锚了...");
}
}
3、创建一个工厂(类),用于生成实体
public class CarFactory {
public Car getCar(String type) {
if (type == null) {
return null;
}
if (type.equalsIgnoreCase("taxi")) {
return new Taxi();
}
if (type.equalsIgnoreCase("bus")) {
return new Bus();
}
if (type.equalsIgnoreCase("sedan")) {
return new Sedan();
}
return null;
}
}
4、使用工厂创建对象
public class FactoryPatternTest {
public static void main(String[] args) {
CarFactory carFactory = new CarFactory();
Car taxi = carFactory.getCar("taxi");
taxi.run();
taxi.stop();
Car bus = carFactory.getCar("bus");
bus.run();
bus.stop();
Car sedan = carFactory.getCar("sedan");
sedan.run();
sedan.stop();
}
}
5、输出结果
打表计价中
本次费用xx元
车辆行人请注意
xxx站到了
一路向西去大理
抛锚了...
Process finished with exit code 0
网友评论