工廠方法模式(Factory Method)html
工廠模式分爲,普通工廠模式,多個工廠模式,靜態工廠方法,我本身鍾愛使用靜態工廠模式。java
此模式說白了就是很好的使用了java多態,重寫,減小了代碼的冗餘,並時整個流程變得很清晰。閉包
一,靜態工廠方法ide
舉個簡單實例,以便往後看的時候,更快速理解。測試
/**發送接口*/ public interface Sender { public void Send(); } /**兩個對象的實現類*/ public class MailSender implements Sender { @Override public void Send() { System.out.println("this is mailsender!"); } } public class SmsSender implements Sender { @Override public void Send() { System.out.println("this is sms sender!"); } } /**建立對象的工廠類*/ public class SendFactory { //這裏demo參數爲String類型,實際中用枚舉類比較合適,並用swich case 定位須要建立哪一個對象 public static Sender produce(String type) { if ("mail".equals(type)) { return new MailSender(); } else if ("sms".equals(type)) { return new SmsSender(); } else { System.out.println("請輸入正確的類型!"); return null; } } } /**運行測試類*/ public class FactoryTest { public static void main(String[] args) { Sender sender = SendFactory.produce("sms"); sender.Send(); } }
代碼的 REFERENCE: https://www.cnblogs.com/maowang1991/archive/2013/04/15/3023236.htmlthis
我的以爲用的場景不少,好比 不少模塊或者不少對象,都有相同的方法時候,好比save方法,基本上每一個模塊都有save方法,dao層可能相同,可是service層的業務可能會不同,這時候就可使用工廠模式去 編寫不一樣的實現類,實現同一個save方法。code
缺點:工廠方法模式有一個問題就是,類的建立依賴工廠類,也就是說,若是想要拓展程序,必須對工廠類進行修改,違反閉包原則。htm