Java: patrón de fábrica abstracto

El patrón de fábrica abstracto es crear otras fábricas alrededor de una súper fábrica. Esta súper fábrica también se llama fábrica de otras fábricas.
Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí

Categoría de negocios:

Motor:
1. Motor:

public abstract class Engine {
    
    
    public abstract void createEngine();
}

1) BaoMaEngine:

public class BaoMaEngine extends Engine{
    
    
    @Override
    public void createEngine() {
    
    
        System.out.println("宝马发动机...");
    }
}

2) BenChiEngine:

public class BenChiEngine extends Engine{
    
    
    @Override
    public void createEngine() {
    
    
        System.out.println("奔驰发动机...");
    }
}

Color:
2. Color:

public abstract class Colour {
    
    
    public abstract void createColour();
}

1) Rojo :

public class Red extends Colour {
    
    
    @Override
    public void createColour() {
    
    
        System.out.println("红色喷漆...");
    }
}

2) Negro :

public class Black extends Colour {
    
    
    @Override
    public void createColour() {
    
    
        System.out.println("黑色喷漆...");
    }
}

Clase de fábrica:

CarFactory:

public abstract class CarFactory {
    
    
    public abstract Engine getEngine();

    public abstract Colour getColour();
}

1 、 EngineFactory :

public abstract class EngineFactory extends CarFactory{
    
    
    public abstract Engine getEngine();
}

1) BaoMaFactory :

public class BaoMaFactory extends EngineFactory{
    
    
    @Override
    public Engine getEngine() {
    
    
        return new BaoMaEngine();
    }

    @Override
    public Colour getColour() {
    
    
        //Do Nothing
        //此处为语法要求,没有任何世纪作用
        return null;
    }
}

2) BenChiFactory:

public class BenChiFactory extends EngineFactory{
    
    
    @Override
    public Engine getEngine() {
    
    
        return new BenChiEngine();
    }

    @Override
    public Colour getColour() {
    
    
        //Do Nothing
        //此处为语法要求,没有任何世纪作用
        return null;
    }
}

2 、 ColourFactory :

public abstract class ColourFactory extends CarFactory{
    
    
    public abstract Colour getColour();
}

1) RedFactory

public class RedFactory extends ColourFactory{
    
    
    @Override
    public Engine getEngine() {
    
    
        //Do Nothing
        //此处为语法要求,没有任何世纪作用
        return null;
    }

    @Override
    public Colour getColour() {
    
    
        return new Red();
    }
}

2) BlackFactory

public class BlackFactory extends ColourFactory{
    
    
    @Override
    public Engine getEngine() {
    
    
        //Do Nothing
        //此处为语法要求,没有任何世纪作用
        return null;
    }

    @Override
    public Colour getColour() {
    
    
        return new Black();
    }
}

Prueba:

public class Test {
    
    
    public static void main(String[] args) {
    
    
        CarFactory carColour=new BlackFactory();
        CarFactory carEngine=new BaoMaFactory();

        Colour colour=carColour.getColour();
        Engine engine=carEngine.getEngine();

        colour.createColour();
        engine.createEngine();
    }
}

resultado de la operación:

黑色喷漆...
宝马发动机...

Supongo que te gusta

Origin blog.csdn.net/qq_44371305/article/details/113253723
Recomendado
Clasificación