1. 程式人生 > 其它 >java設計模式一一工廠模式

java設計模式一一工廠模式

技術標籤:java設計模式javajava設計模式工廠模式

java設計模式一一工廠模式

1、什麼是工廠模式

工廠模式(Factory Pattern)是 Java 中最常用的設計模式之一。這種型別的設計模式屬於建立型模式,它提供了一種建立物件的最佳方式。在工廠模式中,我們在建立物件時不會對客戶端暴露建立邏輯,並且是通過使用一個共同的介面來指向新建立的物件。

2、工廠模式的作用

1、工廠模式是為了解耦
	把物件的建立和使用的過程分開。就是class A 呼叫 class B,那麼只是呼叫B的方法,而至於B的例項化就交給工廠類
2、工廠模式可以降低程式碼的重複
	如果建立class B的過程很複雜,需要一定的程式碼量,而且很多地方都需要用到,那麼就會用重複的程式碼。可以把這些建立物件B的程式碼放到工廠裡統一管理。即減少了程式碼業方便以後的維護。
3、工廠模式可以減少錯誤
	因為工廠管理物件的建立邏輯,使用者不需要知道具體的建立過程,只管使用即可,減少了使用者因為建立導致的錯誤。

工廠模式可以分為:簡單工廠,工廠方法,抽象工廠,靜態工廠模式

3、工廠模式優缺點

**優點:**
	 1、一個呼叫者想建立一個物件,只要知道其名稱就可以了。 
	 2、擴充套件性高,如果想增加一個產品,只要擴充套件一個工廠類就可以。
	 3、遮蔽產品的具體實現,呼叫者只關心產品的介面。
 **缺點:**
 	每次增加一個產品時,都需要增加一個具體類和物件實現工廠,使得系統中類的個數成倍增加,在一定程度上增加了系統的複雜度,同時也增加了系統具體類的依賴。這並不是什麼好事。

4、程式碼示例

4.1-公共支付介面

@Component
public interface PaymentService {
    public void pay();
}

4.2-每個不同的支付類

public class AliPaySercice implements PaymentService {
    @Override
    public void pay() {
        System.out.println("阿里支付物件...");
    }
}

public class WeChatService implements PaymentService {
    @Override
    public void pay() {
        System.out.println("微信支付物件...");
    }
}

4.3-支付工廠類

class PayMentFactory {
    public PaymentService getPaymentService(String payType) {
        PaymentService paymentService = null;
        switch (payType) {
            case "ali_pay":
                paymentService = new AliPaySercice();
                break;
            case "wechat_pay":
                paymentService = new WeChatService();
                break;
        }
        return paymentService;
    }
}

4.4-測試類

public class PayMentFactoryTest {
    public static void main(String[] args) {
        PayMentFactory payMentFactory = new PayMentFactory();
        PaymentService ali_pay = payMentFactory.getPaymentService("ali_pay");
        ali_pay.pay();

        PaymentService wechat_pay = payMentFactory.getPaymentService("wechat_pay");
        wechat_pay.pay();
    }
}

5、測試

在這裡插入圖片描述
github專案:java-design-pattern
【參考】:螞蟻課堂菜鳥教程