一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - 深入剖析Java工廠模式讓你的代碼更靈活

深入剖析Java工廠模式讓你的代碼更靈活

2023-05-09 01:03未知服務器之家 Java教程

目錄 一、概述 1.1 什么是Java工廠模式 二、簡單工廠 2.1 什么是簡單工廠 2.2 示例代碼 2.3 優(yōu)點和缺點 三、工廠方法 3.1 什么是工廠方法 3.2 示例代碼 3.3 優(yōu)點和缺點 四、抽象工廠 4.1 什么是抽象工廠 4.2 示例代碼 4.3 優(yōu)點和缺點 4.4 使

目錄
  • 一、概述
    • 1.1 什么是Java工廠模式
  • 二、簡單工廠
    • 2.1 什么是簡單工廠
    • 2.2 示例代碼
    • 2.3 優(yōu)點和缺點
  • 三、工廠方法
    • 3.1 什么是工廠方法
    • 3.2 示例代碼
    • 3.3 優(yōu)點和缺點
  • 四、抽象工廠
    • 4.1 什么是抽象工廠
    • 4.2 示例代碼
    • 4.3 優(yōu)點和缺點
    • 4.4 使用工廠模式的例子

一、概述

1.1 什么是Java工廠模式

Java工廠模式是一種創(chuàng)建對象的設計模式,它提供了一種方法,通過該方法可以在不暴露對象創(chuàng)建邏輯的情況下,將對象的創(chuàng)建委托給子類或者其他對象。工廠模式可以隱藏對象的創(chuàng)建細節(jié),提高了代碼的可維護性、可擴展性和可重用性。

工廠模式主要有三種類型:簡單工廠、工廠方法和抽象工廠。這三種類型的工廠模式各有優(yōu)缺點,在不同的場景下有不同的應用。

二、簡單工廠

2.1 什么是簡單工廠

簡單工廠模式是一種創(chuàng)建對象的工廠模式,它定義了一個工廠類,該工廠類根據(jù)傳遞的參數(shù)來決定創(chuàng)建哪種類型的對象。簡單工廠模式適用于創(chuàng)建的對象比較少,且客戶端只需要知道創(chuàng)建對象的參數(shù)。

2.2 示例代碼

//抽象產(chǎn)品類
interface Product {
    void show();
}

//具體產(chǎn)品類A
class ConcreteProductA implements Product {
    public void show() {
        System.out.println("This is product A");
    }
}

//具體產(chǎn)品類B
class ConcreteProductB implements Product {
    public void show() {
        System.out.println("This is product B");
    }
}

//工廠類
class SimpleFactory {
    public static Product createProduct(String type) {
        Product product = null;
        if (type.equals("A")) {
            product = new ConcreteProductA();
        } else if (type.equals("B")) {
            product = new ConcreteProductB();
        }
        return product;
    }
}

//客戶端
public class Client {
    public static void main(String[] args) {
        Product productA = SimpleFactory.createProduct("A");
        productA.show();

        Product productB = SimpleFactory.createProduct("B");
        productB.show();
    }
}

2.3 優(yōu)點和缺點

簡單工廠模式的優(yōu)點是可以隱藏產(chǎn)品的創(chuàng)建細節(jié),客戶端不需要知道產(chǎn)品的創(chuàng)建過程,只需要傳遞相應的參數(shù)即可得到想要的產(chǎn)品。簡單工廠模式可以使客戶端和產(chǎn)品類解耦,提高代碼的可維護性和可擴展性。

簡單工廠模式的缺點是當需要新增產(chǎn)品時,需要修改工廠類的代碼,這違反了開閉原則。另外,簡單工廠模式通常只有一個工廠類,如果產(chǎn)品種類較多,工廠類的代碼會變得比較臃腫,不易于維護。

三、工廠方法

3.1 什么是工廠方法

工廠方法模式是一種創(chuàng)建對象的工廠模式,它定義了一個抽象工廠類,該抽象工廠類有一個工廠方法,該工廠方法返回一個產(chǎn)品對象。具體的產(chǎn)品對象由實現(xiàn)該抽象工廠類的子類來創(chuàng)建,這樣每個具體工廠類只負責創(chuàng)建特定的產(chǎn)品對象,從而將客戶端和具體產(chǎn)品解耦。

工廠方法模式通常包括四個角色:抽象產(chǎn)品類、具體產(chǎn)品類、抽象工廠類和具體工廠類。

3.2 示例代碼

//抽象產(chǎn)品類
interface Product {
    void show();
}

//具體產(chǎn)品類A
class ConcreteProductA implements Product {
    public void show() {
        System.out.println("This is product A");
    }
}

//具體產(chǎn)品類B
class ConcreteProductB implements Product {
    public void show() {
        System.out.println("This is product B");
    }
}

//抽象工廠類
interface Factory {
    Product createProduct();
}

//具體工廠類A
class ConcreteFactoryA implements Factory {
    public Product createProduct() {
        return new ConcreteProductA();
    }
}

//具體工廠類B
class ConcreteFactoryB implements Factory {
    public Product createProduct() {
        return new ConcreteProductB();
    }
}

//客戶端
public class Client {
    public static void main(String[] args) {
        Factory factoryA = new ConcreteFactoryA();
        Product productA = factoryA.createProduct();
        productA.show();

        Factory factoryB = new ConcreteFactoryB();
        Product productB = factoryB.createProduct();
        productB.show();
    }
}

3.3 優(yōu)點和缺點

工廠方法模式的優(yōu)點是可以將客戶端和具體產(chǎn)品解耦,每個具體工廠類只負責創(chuàng)建特定的產(chǎn)品對象,從而使系統(tǒng)更加靈活、可擴展和易于維護。工廠方法模式遵循了開閉原則,當需要新增產(chǎn)品時,只需要添加相應的具體產(chǎn)品類和具體工廠類即可,而不需要修改抽象工廠類和客戶端代碼。

工廠方法模式的缺點是如果需要創(chuàng)建的產(chǎn)品對象比較多,就需要創(chuàng)建相應的具體工廠類,這會導致系統(tǒng)中類的個數(shù)增加,增加了系統(tǒng)的復雜度。另外,由于每個具體工廠類只能創(chuàng)建特定的產(chǎn)品對象,如果需要創(chuàng)建的產(chǎn)品對象較為復雜,可能需要創(chuàng)建多個具體工廠類來創(chuàng)建這些產(chǎn)品對象,這會導致代碼的重復和冗余。

四、抽象工廠

4.1 什么是抽象工廠

抽象工廠模式是一種創(chuàng)建對象的工廠模式,它可以創(chuàng)建一組相關或相互依賴的對象,而無需指定它們的具體類。在抽象工廠模式中,有一個抽象工廠類,它定義了一些方法用于創(chuàng)建一組產(chǎn)品對象,每個方法對應一種產(chǎn)品。具體工廠類實現(xiàn)了這些方法,用于創(chuàng)建具體的產(chǎn)品對象。

抽象工廠模式通常包括四個角色:抽象產(chǎn)品類、具體產(chǎn)品類、抽象工廠類和具體工廠類。

4.2 示例代碼

//抽象產(chǎn)品類1
interface Product1 {
    void show();
}

//具體產(chǎn)品類1A
class ConcreteProduct1A implements Product1 {
    public void show() {
        System.out.println("This is product 1A");
    }
}

//具體產(chǎn)品類1B
class ConcreteProduct1B implements Product1 {
    public void show() {
        System.out.println("This is product 1B");
    }
}

//抽象產(chǎn)品類2
interface Product2 {
    void show();
}

//具體產(chǎn)品類2A
class ConcreteProduct2A implements Product2 {
    public void show() {
        System.out.println("This is product 2A");
    }
}

//具體產(chǎn)品類2B
class ConcreteProduct2B implements Product2 {
    public void show() {
        System.out.println("This is product 2B");
    }
}

//抽象工廠類
interface Factory {
    Product1 createProduct1();
    Product2 createProduct2();
}

//具體工廠類A
class ConcreteFactoryA implements Factory {
    public Product1 createProduct1() {
        return new ConcreteProduct1A();
    }

    public Product2 createProduct2() {
        return new ConcreteProduct2A();
    }
}

//具體工廠類B
class ConcreteFactoryB implements Factory {
    public Product1 createProduct1() {
        return new ConcreteProduct1B();
    }

    public Product2 createProduct2() {
        return new ConcreteProduct2B();
    }
}

//客戶端
public class Client {
    public static void main(String[] args) {
        Factory factoryA = new ConcreteFactoryA();
        Product1 product1A = factoryA.createProduct1();
        Product2 product2A = factoryA.createProduct2();
        product1A.show();
        product2A.show();

        Factory factoryB = new ConcreteFactoryB();
        Product1 product1B = factoryB.createProduct1();
        Product2 product2B = factoryB.createProduct2();
        product1B.show();
        product2B.show();
    }
}

4.3 優(yōu)點和缺點

抽象工廠模式的優(yōu)點是它可以創(chuàng)建一組相關或相互依賴的對象,而無需指定它們的具體類,從而使系統(tǒng)更加靈活、可擴展和易于維護。抽象工廠模式遵循了開閉原則,當需要新增產(chǎn)品時,只需要添加相應的抽象產(chǎn)品類、具體產(chǎn)品類和具體工廠類即可,不需要修改已有代碼,這樣可以減少系統(tǒng)的維護成本和風險。

抽象工廠模式還可以實現(xiàn)產(chǎn)品族的概念,即一組位于不同產(chǎn)品等級結構中、功能相關聯(lián)的產(chǎn)品組成的家族,例如不同品牌的汽車,它們都有輪胎、發(fā)動機、座椅等共同特點,但具體實現(xiàn)各不相同。使用抽象工廠模式可以將不同品牌的汽車組成一個產(chǎn)品族,實現(xiàn)同一功能的產(chǎn)品可以進行互換。

抽象工廠模式的缺點是抽象工廠類需要定義一組方法用于創(chuàng)建產(chǎn)品對象,增加新產(chǎn)品對象時,需要修改抽象工廠類及其所有的具體工廠類,這將導致系統(tǒng)的維護復雜度增加。抽象工廠模式將一組相關的產(chǎn)品對象集合在一起創(chuàng)建,當產(chǎn)品族中的產(chǎn)品等級結構發(fā)生變化時,將會影響到整個系統(tǒng),需要重構整個工廠。

4.4 使用工廠模式的例子

一個常見的使用抽象工廠模式的例子是操作系統(tǒng)的界面風格,例如Windows系統(tǒng)有Aero和Classic兩種界面風格,而Mac OS有Aqua和Metal兩種界面風格。每種界面風格都有自己的按鈕、文本框、滾動條等組件,因此可以將每種界面風格看作一個產(chǎn)品族,而每個組件則看作產(chǎn)品等級結構中的一個產(chǎn)品。使用抽象工廠模式可以將不同界面風格的組件組成一個產(chǎn)品族,實現(xiàn)同一功能的組件可以進行互換。例如,用戶可以選擇使用Aero風格的按鈕和Metal風格的文本框,而系統(tǒng)仍然能夠正常工作。

另一個使用抽象工廠模式的例子是游戲中的角色創(chuàng)建,例如一個RPG游戲中有魔法師、戰(zhàn)士和弓箭手三種角色,而每種角色又可以選擇不同的裝備,例如不同的武器、防具和飾品。可以將每種角色看作一個產(chǎn)品族,而每個裝備則看作產(chǎn)品等級結構中的一個產(chǎn)品。使用抽象工廠模式可以將不同角色的裝備組成一個產(chǎn)品族,實現(xiàn)同一功能的裝備可以進行互換。例如,魔法師可以選擇使用火屬性的魔杖和光屬性的魔法書,而戰(zhàn)士可以選擇使用鐵劍和鋼盾,而系統(tǒng)仍然能夠正常工作。

原文地址:https://juejin.cn/post/7229891190899785765

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 欧美乱强 | 亚洲第成色999久久网站 | 国产精品一二区 | 操破苍穹在线 | 青青草综合网 | 人成午夜免费大片在线观看 | 精品AV无码一二三区视频 | 国产精品久久久久久久久久久搜索 | 韩国最新理论三级在线观看 | 亚洲精品91大神在线观看 | 亚洲国产第一区二区香蕉日日 | 日韩欧美中文在线 | 国产精品怡红院永久免费 | 国产成人精品高清免费 | 四缺一的小说 | 国产激情一区二区三区成人91 | 99精品视频在线观看免费 | 日韩丝袜在线观看 | 91欧美国产 | 日韩日韩日韩手机看片自拍 | 热门小说同人h改编h | 国产欧美日韩综合 | 亚洲精品综合一二三区在线 | 好大好硬好深好爽gif图 | 国产精品青青青高清在线观看 | 亚洲天天做夜夜做天天欢 | 久久精品一区二区三区资源网 | 免费 视频| free哆拍拍免费永久视频 | 国产精品免费小视频 | 国产aaaaa一级毛片 | 91xj视频| 国模孕妇季玥全部人体写真 | 亚洲精品视频免费在线观看 | 成人网18免费网站 | 91制片厂(果冻传媒)原档破解 | 精品女同同性视频很黄很色 | 舔穴吸奶 | 国产香蕉一区二区精品视频 | 成人永久免费视频 | 免费人成在线观看视频播放 |