介紹
工廠模式屬于創(chuàng)建對象模式,提供給客戶端共同創(chuàng)建對象的接口,不暴露創(chuàng)建對象的邏輯。
統(tǒng)一生產(chǎn)對象,便于管理和解耦。
例如:想要一輛汽車,直接去4s店提貨,而不需要關(guān)心汽車如何造出來的。
實(shí)現(xiàn)

image.png
1、創(chuàng)建一個(gè)Car接口
public interface Car {
public void run();
public void stop();
}
2、創(chuàng)建實(shí)體類
public class Taxi implements Car {
@Override
public void run() {
System.out.println("打表計(jì)價(jià)中");
}
@Override
public void stop() {
System.out.println("本次費(fèi)用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、創(chuàng)建一個(gè)工廠(類),用于生成實(shí)體
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、使用工廠創(chuàng)建對象
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、輸出結(jié)果
打表計(jì)價(jià)中
本次費(fèi)用xx元
車輛行人請注意
xxx站到了
一路向西去大理
拋錨了...
Process finished with exit code 0