1.簡單工廠模式是屬於建立型模式,又叫作靜態工廠方法模式。
它的實現方式是由一個工廠類根據傳入的參數,動態決定應該建立哪個產品類(這些產品類繼承自一個父類或接口)的實例。git
2.簡單工廠模式由三種角色組成:
(1)工廠角色:簡單工廠模式的核心,它負責實現建立全部實例的內部邏輯。工廠類的建立產品類的方法能夠被外界直接調用,建立所需的產品對象。
(2)抽象產品角色:簡單工廠模式所建立的全部對象的父類,它負責描述全部實例所共有的公共接口。
(3)具體產品角色:是簡單工廠模式的建立目標,全部建立的對象都是充當這個角色的某個具體類的實例。github
3.場景:在一個商城系統中,用戶能夠選擇三種支付方式,微信支付,支付寶支付,餘額支付。設計模式
4.實現:微信
咱們將建立一個 PaymentMethod 接口和實現 PaymentMethod 接口的實體類。下一步是定義工廠類 PayFactory。ide
Main是演示咱們簡單工廠模式的入口。學習
UML圖以下:微信支付
步驟1.建立接口類spa
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.建立一個工廠,生成基於給定信息的實體類的對象。code
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吧。