1.簡單工廠模式是屬於創建型模式,又叫做靜態工廠方法模式。
它的實現方式是由一個工廠類根據傳入的參數,動態決定應該創建哪一個產品類(這些產品類繼承自一個父類或接口)的實例。
2.簡單工廠模式由三種角色組成:
(1)工廠角色:簡單工廠模式的核心,它負責實現創建所有實例的內部邏輯。工廠類的創建產品類的方法可以被外界直接調用,創建所需的產品對象。
(2)抽象產品角色:簡單工廠模式所創建的所有對象的父類,它負責描述所有實例所共有的公共接口。
(3)具體產品角色:是簡單工廠模式的創建目標,所有創建的對象都是充當這個角色的某個具體類的實例。
3.場景:在一個商城系統中,用戶可以選擇三種支付方式,微信支付,支付寶支付,余額支付。
4.實現:
我們將創建一個 PaymentMethod 接口和實現 PaymentMethod 接口的實體類。下一步是定義工廠類 PayFactory。
Main是演示我們簡單工廠模式的入口。
UML圖如下:
步驟1.創建接口類
public interface PaymentMethod { void pay(); }
步驟2.實現接口類
public class Alipay implements PaymentMethod { @Override public void pay() { System.out.println("支付寶支付"); } }
public class BalancePay implements PaymentMethod { @Override public void pay() { System.out.println("余額支付"); } }
public class WechatPay implements PaymentMethod { @Override public void pay() { System.out.println("微信支付"); } }
步驟3.創建一個工廠,生成基於給定信息的實體類的對象。
public class PayFactory { public PaymentMethod getPayment(String payType){ switch (payType){ case "alipay": return new Alipay(); case "wechatPay": return new WechatPay(); case "balancePay": return new BalancePay(); default: System.out.println("支付方式錯誤"); } return null; } }
步驟4.使用該工廠,通過傳遞類型信息來獲取實體類的對象。
public class Main { public static void main(String[] args) { PayFactory payFactory = new PayFactory(); PaymentMethod paymentMethod = payFactory.getPayment("alipay"); paymentMethod.pay(); } }
附上demo源碼:
https://github.com/littleStone-chan/design-patternsIn-mall/tree/master/simple-factory
在工作中,不能靈活的時候設計模式。希望通過這次的學習,可以加深對設計模式對理解。
接下來會繼續整理出自己在工作對時候可以使用對設計模式,不對望指點。如果文章對您有幫助,github給個start吧。