java設計模式一一工廠模式
阿新 • • 發佈:2020-12-27
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
【參考】:螞蟻課堂、菜鳥教程