Java抽象工廠模式

存在Shape,Color兩個(gè)工廠
這兩個(gè)工廠又繼承抽象類AbstractFactory。
自上而下

先創(chuàng)建頂層抽象工廠:AbstractFactory.java,有兩個(gè)抽象方法,傳一個(gè)String參數(shù),返回Shap/Color對象

public abstract class AbstractFactory {
    abstract Shape getShape(String shape);
    abstract Color getColor(String color);

}

然后創(chuàng)建ShapeFactory.java和ColorFactory.java,繼承AbstractFactory.java。根據(jù)不同的傳參返回不同的Shape/Color。

public class ShapeFactory extends AbstractFactory {
    @Override
    Shape getShape(String shape) {
        switch (shape){
            case "Circle":{
                return new Circle();
            }
            case "Square":{
                return new Square();
            }

        }

        return null;
    }

    @Override
    Color getColor(String color) {
        return null;
    }
}



public class ColorFactoyr extends AbstractFactory {

    @Override
    Shape getShape(String shape) {
        return null;
    }

    @Override
    Color getColor(String color) {
        switch (color){
            case "Red":{
                return new Red();
            }

            case "Green":{
                return new Green();
            }
        }
        return null;
    }
}

創(chuàng)建兩個(gè)接口Shape.java和Color.java,給Shape接口一個(gè)draw()方法,給Color接口一個(gè)fill()方法

public interface Shape {
    void draw();
}

public interface Color {
    void fill();
}

創(chuàng)建Shape和Color的實(shí)現(xiàn)類

public class Square implements Shape {

    @Override
    public void draw() {
        System.out.println("drawing square...");
    }
}
public class Circle implements Shape {
    @Override
    public void draw() {
        System.out.println("drawing circle....");
    }
}

-------------------------------------------------------------------
public class Green implements Color{

    @Override
    public void fill() {
        System.out.println("filling green...");
    }
}

public class Red implements Color{

    @Override
    public void fill() {
        System.out.println("filling red...");
    }
}

這樣就完成了抽象工廠模式,就是有一個(gè)抽象類用來生成工廠類,最后寫一個(gè)測試方法驗(yàn)證下

public class AbstractFactoryTest {
    public static void main(String[] args) {

        AbstractFactory shapeFactory = new ShapeFactory();
        Shape shape = shapeFactory.getShape("Circle");
        shape.draw();

        AbstractFactory colorFactory = new ColorFactoyr();
        Color color = colorFactory.getColor("Red");
        color.fill();


        }
    }

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 概述 每一個(gè)模式都是針對一定問題的解決方案。抽象工廠模式與工廠方法模式的最大區(qū)別就在于,工廠方法模式針對的是一個(gè)產(chǎn)...
    今晚打肉山閱讀 717評論 0 4
  • 轉(zhuǎn):http://www.runoob.com/design-pattern/abstract-factory-p...
    right_33cb閱讀 224評論 0 0
  • 一、介紹 意圖:提供一個(gè)創(chuàng)建一系列相關(guān)或相互依賴對象的接口,而無需指定它們具體的類。主要解決:主要解決接口選擇的問...
    聶叼叼閱讀 193評論 0 1
  • 這篇我們將介紹最后一種工廠模式,抽象工廠模式 0.拋出問題 很多博客和書都喜歡用很生活化的例子來實(shí)現(xiàn)設(shè)計(jì)模式的代碼...
    ironman327閱讀 943評論 0 2
  • 概念 圍繞一個(gè)超級工廠創(chuàng)建其他工廠。此超級工廠又稱為其他工廠的工廠。屬于創(chuàng)建型模式。 使用場景 QQ換膚(一整套一...
    意大利大炮閱讀 257評論 0 0

友情鏈接更多精彩內(nèi)容