Tres, fábrica abstracta (modo de fábrica abstracta)
Patrón de fábrica abstracto: proporciona una interfaz para crear una serie de objetos relacionados o interdependientes sin especificar sus clases específicas.
Ahora continuamos fabricando automóviles BMW. Con las crecientes necesidades de los clientes, los automóviles BMW necesitan diferentes configuraciones de acondicionadores de aire y motores y otros accesorios. Entonces esta fábrica comenzó a producir aires acondicionados y motores para ensamblar autos. La fábrica tiene dos series de productos: aires acondicionados y motores. La serie BMW X5 está equipada con acondicionadores de aire tipo A y motores tipo A, y la serie BMW X6 está equipada con acondicionadores de aire tipo B y motores tipo B.
Categoria de producto:
// BMW.java
BMW clase pública abstracta {
publicBMW () {
}
}
// BMWX5.java
BMWX5 de clase pública amplía BMW {
publicBMWX5 () {
System.out.println ("Hacer un BMW X5");
}
}
// BMWX6.java
BMWX6 de clase pública amplía BMW {
publicBMWX6 () {
System.out.println ("Hacer un BMW X6");
}
}
// Engine.java
Motor de clase abstracta pública {}
// EngineA.java
EngineA de clase pública extiendeEngine {
Public EngineA () {
System.out.println ("Fabricar un motor A");
}
}
// EngineB.java
EngineB de clase pública extiendeEngine {
EngineB público () {
System.out.println ("Fabricar un motor B");
}
}
// Aircondition.java
classAircondition abstracta pública {}
// Aire acondicionadoA.java
clase pública AirconditionAextends Aircondition {
public AirconditionA () {
System.out.println ("Fabricar un acondicionador de aire A");
}
}
// Aire acondicionadoB.java
clase pública AirconditionBextends Aircondition {
public AirconditionB () {
System.out.println ("Fabricar un acondicionador de aire B");
}
}
Clase de fábrica:
// FactoryBMW.java
interfaz pública FactoryBMW {
BMWcreateBMW_A ();
BMWcreateBMW_B ();
AirconditioncreateaAirconditionA ();
AirconditioncreateaAirconditionB ();
}
// FactoryBWMX5.java
// Serie BMW X5: producción de automóviles X5 con dos modelos de aire acondicionado A y B
clase pública FactoryBWMX5implements FactoryBMW {
publicBMWX5 createBMW_A () {
createaAirconditionA ();
volver nuevo BMWX5 ();
}
publicBMWX5 createBMW_B () {
createaAirconditionB();
returnnew BMWX5();
}
publicAircondition createaAirconditionA() {
returnnew AirconditionA();
}
publicAircondition createaAirconditionB() {
returnnew AirconditionB();
}
}
// FactoryBWMX6.java
//宝马X6系列,生产配置A,B两种空调型号的X6汽车
public class FactoryBWMX6implements FactoryBMW {
publicBMWX6 createBMW_A() {
createaAirconditionA();
returnnew BMWX6();
}
publicBMWX6 createBMW_B() {
createaAirconditionB();
returnnew BMWX6();
}
publicAircondition createaAirconditionA() {
returnnew AirconditionA();
}
publicAircondition createaAirconditionB() {
returnnew AirconditionB();
}
}
客户类:
// Customer.java
public class Customer {
publicstatic void main(String[] args){
//想要A型空调宝马X5
FactoryBWMX5factoryBWMX5_A = new FactoryBWMX5();
BMWX5x5_A = factoryBWMX5_A.createBMW_A();
//想要B型空调宝马X5
FactoryBWMX5factoryBWMX5_B = new FactoryBWMX5();
BMWX5x5_B = factoryBWMX5_B.createBMW_B();
//想要A型空调宝马X6
FactoryBWMX6factoryBWMX6_A = new FactoryBWMX6();
BMWX6x6_A = factoryBWMX6_A.createBMW_A();
//想要B型空调宝马X6
FactoryBWMX6factoryBWMX6_B = new FactoryBWMX6();
BMWX6x6_B = factoryBWMX6_B.createBMW_B();
}
}