設計模式一 之 工廠模式(Factory Method)

工廠方法模式(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

相關文章
相關標籤/搜索