国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Java基礎(chǔ):簡單工廠模式、工廠方法模式和抽象工廠模式綜合概述

這篇具有很好參考價值的文章主要介紹了Java基礎(chǔ):簡單工廠模式、工廠方法模式和抽象工廠模式綜合概述。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

簡單工廠模式、工廠方法模式和抽象工廠模式是面向?qū)ο笤O(shè)計中用來實現(xiàn)對象創(chuàng)建靈活性的三種不同形式的工廠模式。它們各自有其特點、適用場景及優(yōu)缺點。以下是它們之間的區(qū)別以及對應(yīng)的適用場景,以及示例說明:

簡單工廠模式

定義
簡單工廠模式提供一個靜態(tài)方法或非靜態(tài)方法,通過接收參數(shù)來決定創(chuàng)建并返回何種具體產(chǎn)品對象。這個方法通常存在于一個單獨的“工廠”類中,負責處理對象的創(chuàng)建細節(jié)。

特點

  • 集中控制對象的創(chuàng)建過程。
  • 適用于創(chuàng)建邏輯相對簡單、產(chǎn)品種類數(shù)量有限且易于擴展的情況。

適用場景

  • 創(chuàng)建對象的邏輯可能經(jīng)常變化或者需要在運行時動態(tài)決定創(chuàng)建哪種對象。
  • 產(chǎn)品之間存在一定的關(guān)聯(lián)或繼承關(guān)系,由同一個工廠進行管理。

示例
假設(shè)有一個圖形繪制應(yīng)用程序,需要創(chuàng)建不同類型的圖形(如圓形、矩形、三角形)??梢远x一個ShapeFactory來根據(jù)傳入的類型字符串生成相應(yīng)的Shape對象:

public interface Shape {
    void draw();
}

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

public class Rectangle implements Shape {
    @Override
    public void draw() {
        System.out.println("Drawing a rectangle");
    }
}

public class Triangle implements Shape {
    @Override
    public void draw() {
        System.out.println("Drawing a triangle");
    }
}

public class ShapeFactory {
    public static Shape createShape(String shapeType) {
        if ("circle".equals(shapeType)) {
            return new Circle();
        } else if ("rectangle".equals(shapeType)) {
            return new Rectangle();
        } else if ("triangle".equals(shapeType)) {
            return new Triangle();
        } else {
            throw new IllegalArgumentException("Invalid shape type");
        }
    }
}

// 使用
Shape circle = ShapeFactory.createShape("circle");
circle.draw();

工廠方法模式

定義
工廠方法模式定義了一個創(chuàng)建對象的接口,但讓子類決定實例化哪一個類。工廠方法使一個類的實例化延遲到其子類。每個子類對應(yīng)一種具體的產(chǎn)品,負責創(chuàng)建該產(chǎn)品的實例。

特點

  • 將具體產(chǎn)品的創(chuàng)建延遲到子類中完成,符合“開閉原則”,即對擴展開放,對修改關(guān)閉。
  • 適用于產(chǎn)品族內(nèi)的產(chǎn)品差異較大或產(chǎn)品種類繁多,且需要保持高度解耦。

適用場景

  • 當一個類不知道它所必須創(chuàng)建的對象的類時。
  • 當一個類希望由它的子類來指定它所創(chuàng)建的對象的時候。
  • 當類將創(chuàng)建對象的職責委托給多個幫助子類中的某一個,并且你希望將哪一個幫助子類是代理者這一信息局部化的時候。

示例
繼續(xù)上述圖形繪制應(yīng)用程序的例子,如果產(chǎn)品種類增加且差異較大,可以采用工廠方法模式。首先定義一個抽象工廠接口和各種圖形工廠子類:

public interface ShapeFactory {
    Shape createShape();
}

public class CircleFactory implements ShapeFactory {
    @Override
    public Shape createShape() {
        return new Circle();
    }
}

public class RectangleFactory implements ShapeFactory {
    @Override
    public Shape createShape() {
        return new Rectangle();
    }
}

public class TriangleFactory implements ShapeFactory {
    @Override
    public Shape createShape() {
        return new Triangle();
    }
}

// 使用
ShapeFactory circleFactory = new CircleFactory();
Shape circle = circleFactory.createShape();
circle.draw();

抽象工廠模式

定義
抽象工廠模式提供一個創(chuàng)建一系列相關(guān)或相互依賴對象的接口,而無需指定它們具體的類。客戶端使用抽象工廠來創(chuàng)建對象族,而不直接使用具體產(chǎn)品類。

特點

  • 用于創(chuàng)建一族相關(guān)或相互依賴的對象(產(chǎn)品族),而不僅僅是一個產(chǎn)品對象。
  • 提供一個高層接口,隱藏產(chǎn)品的具體實現(xiàn)系列,使得客戶使用起來更加方便。

適用場景

  • 當一個系統(tǒng)不希望依賴于產(chǎn)品類實例如何被創(chuàng)建、組合和表達的細節(jié)時。
  • 當一個系統(tǒng)需要獨立于它的產(chǎn)品的創(chuàng)建、組合和表示時。
  • 當一個系統(tǒng)的產(chǎn)品有多于一個的產(chǎn)品族,而系統(tǒng)只消費其中某一族的產(chǎn)品時。

示例
假設(shè)圖形應(yīng)用程序除了形狀之外,還引入了顏色概念,每種形狀可以有不同的顏色(如紅色圓形、藍色圓形)。這時可以定義兩個產(chǎn)品族:形狀(Circle、Rectangle、Triangle)和顏色(Red、Blue)。抽象工廠模式可以創(chuàng)建這兩類產(chǎn)品:

public interface Shape {
    void draw();
}

public class RedCircle implements Shape {
    @Override
    public void draw() {
        System.out.println("Drawing a red circle");
    }
}

public class BlueCircle implements Shape {
    @Override
    public void draw() {
        System.out.println("Drawing a blue circle");
    }

    // 其他形狀和顏色的實現(xiàn)...

}

public interface ColorFactory {
    Color getColor();
}

public interface ShapeFactory {
    Shape getShape();
}

public class RedShapeFactory implements ColorFactory, ShapeFactory {
    @Override
    public Color getColor() {
        return new RedColor();
    }

    @Override
    public Shape getShape() {
        return new RedCircle();
    }
}

public class BlueShapeFactory implements ColorFactory, ShapeFactory {
    // 實現(xiàn)相應(yīng)顏色和形狀的創(chuàng)建...
}

// 使用
ShapeFactory redFactory = new RedShapeFactory();
Shape redCircle = redFactory.getShape();
redCircle.draw();

總結(jié)來說,簡單工廠模式適用于創(chuàng)建對象邏輯較簡單且種類有限的情況;工廠方法模式適用于產(chǎn)品族內(nèi)產(chǎn)品差異較大且需要保持高度解耦的場景;抽象工廠模式則適用于需要創(chuàng)建一族相關(guān)或相互依賴的對象(產(chǎn)品族)的情況。選擇使用哪種模式取決于實際項目的需求和復(fù)雜度。文章來源地址http://www.zghlxwxcb.cn/news/detail-858156.html

到了這里,關(guān)于Java基礎(chǔ):簡單工廠模式、工廠方法模式和抽象工廠模式綜合概述的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • JavaScript設(shè)計模式(二)——簡單工廠模式、抽象工廠模式、建造者模式

    JavaScript設(shè)計模式(二)——簡單工廠模式、抽象工廠模式、建造者模式

    個人簡介 ?? 個人主頁: 前端雜貨鋪 ???♂? 學(xué)習(xí)方向: 主攻前端方向,正逐漸往全干發(fā)展 ?? 個人狀態(tài): 研發(fā)工程師,現(xiàn)效力于中國工業(yè)軟件事業(yè) ?? 人生格言: 積跬步至千里,積小流成江海 ?? 推薦學(xué)習(xí):??前端面試寶典 ??Vue2 ??Vue3 ??Vue2/3項目實戰(zhàn) ??Node.js??

    2024年02月10日
    瀏覽(23)
  • 【設(shè)計模式】單例模式、工廠方法模式、抽象工廠模式

    1. 單例模式 (Singleton Pattern): 場景: 在一個應(yīng)用程序中,需要一個全局唯一的配置管理器,確保配置信息只有一個實例。 2. 工廠方法模式 (Factory Method Pattern): 場景: 創(chuàng)建一組具有相似功能但具體實現(xiàn)不同的日志記錄器。 3. 抽象工廠模式 (Abstract Factory Pattern): 場景: 創(chuàng)建不同

    2024年01月15日
    瀏覽(29)
  • 常用設(shè)計模式(工廠方法,抽象工廠,責任鏈,裝飾器模式)

    常用設(shè)計模式(工廠方法,抽象工廠,責任鏈,裝飾器模式)

    有關(guān)設(shè)計模式的其他常用模式請參考 單例模式的實現(xiàn) 常見的設(shè)計模式(模板與方法,觀察者模式,策略模式) 定義一個用于創(chuàng)建對象的接口,讓子類決定實例化哪一個類。Factory Method使得一個類的實例化延遲到子類。 ——《設(shè)計模式》GoF 解決創(chuàng)建過程比較復(fù)雜,希望對外隱藏

    2024年01月22日
    瀏覽(25)
  • 【Java基礎(chǔ)教程】(十五)面向?qū)ο笃?· 第九講:抽象類和接口——定義、限制與應(yīng)用的細節(jié),初窺模板設(shè)計模式、工廠設(shè)計模式與代理設(shè)計模式~

    【Java基礎(chǔ)教程】(十五)面向?qū)ο笃?· 第九講:抽象類和接口——定義、限制與應(yīng)用的細節(jié),初窺模板設(shè)計模式、工廠設(shè)計模式與代理設(shè)計模式~

    掌握 抽象類和接口的定義、使用、區(qū)別、常見設(shè)計模式; 抽象類是代碼開發(fā)中的重要組成部分,利用抽象類可以明確地定義子類需要覆寫的方法,這樣相當于在語法程度上對子類進行了嚴格的定義限制,代碼的開發(fā)也就更加標準。下面具體介紹抽象類的概念。 普通類可以直

    2024年02月16日
    瀏覽(26)
  • java設(shè)計模式【抽象工廠模式】

    java設(shè)計模式【抽象工廠模式】

    抽象工廠模式 是對簡單工廠模式的一個變種,它允許通過一個統(tǒng)一的接口來創(chuàng)建不同的產(chǎn)品實例,而無需指定具體的子類。在這個模式中,我們只關(guān)心產(chǎn)品的抽象接口,而將具體的產(chǎn)品實現(xiàn)留給子類去實現(xiàn)。這樣,我們可以通過創(chuàng)建不同的工廠對象來創(chuàng)建不同的產(chǎn)品實例,而

    2024年02月05日
    瀏覽(31)
  • Java設(shè)計模式-抽象工廠模式

    設(shè)計模式是軟件設(shè)計中的一種常見方法,通過定義一系列通用的解決方案,來解決常見的軟件設(shè)計問題。其中,抽象工廠模式是一種非常常見的設(shè)計模式,它可以幫助我們創(chuàng)建一組相關(guān)的對象,而不需要指定具體的實現(xiàn)方式。 抽象工廠模式是一種創(chuàng)建型設(shè)計模式,它提供了一

    2024年02月01日
    瀏覽(24)
  • java  抽象工廠模式

    java 抽象工廠模式

    抽象工廠模式(Abstract Factory Pattern): 是圍繞一個超級工廠創(chuàng)建其他工廠。該超級工廠又稱為其他工廠的工廠。這種類型的設(shè)計模式屬于創(chuàng)建型模式,它提供了一種創(chuàng)建對象的最佳方式。 在抽象工廠模式中,接口是負責創(chuàng)建一個相關(guān)對象的工廠,不需要顯式指定它們的類。

    2024年04月13日
    瀏覽(20)
  • Java特性之設(shè)計模式【抽象工廠模式】

    Java特性之設(shè)計模式【抽象工廠模式】

    概述 抽象工廠模式(Abstract Factory Pattern)是圍繞一個超級工廠創(chuàng)建其他工廠。該超級工廠又稱為其他工廠的工廠。這種類型的設(shè)計模式屬于創(chuàng)建型模式,它提供了一種創(chuàng)建對象的最佳方式 在抽象工廠模式中,接口是負責創(chuàng)建一個相關(guān)對象的工廠,不需要顯式指定它們的類。

    2024年02月10日
    瀏覽(22)
  • 簡單工廠模式概述和使用

    簡單工廠模式概述和使用

    一、簡單工廠模式簡介 原文鏈接 1. 定義 簡單工廠模式( Simple Factory Pattern ):又稱為靜態(tài)工廠方法(Static Factory Method)模式,它屬于類創(chuàng)建型模式。在簡單工廠模式中,可以根據(jù)參數(shù)的不同返回不同類的實例。簡單工廠模式專門定義一個類來負責創(chuàng)建其他類的實例,被創(chuàng)建的實例

    2024年02月10日
    瀏覽(16)
  • 【Java 設(shè)計模式】創(chuàng)建型之抽象工廠模式

    【Java 設(shè)計模式】創(chuàng)建型之抽象工廠模式

    在軟件開發(fā)中,抽象工廠模式是一種常見的創(chuàng)建型設(shè)計模式, 它提供了一種創(chuàng)建一系列相關(guān)或相互依賴對象的接口,而無需指定它們具體的類 。抽象工廠模式的核心思想是將一組相關(guān)的產(chǎn)品組合成一個工廠,客戶端通過工廠接口創(chuàng)建一系列產(chǎn)品。在本文中,我們將介紹 Jav

    2024年01月17日
    瀏覽(28)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包