1. 程式人生 > >設計模式之二工廠方法模式

設計模式之二工廠方法模式

1、工廠方法模式(Factory Method)

簡單工廠模式有一個問題就是,類的建立依賴工廠類,也就是說,如果想要拓展程式,必須對工廠類進行修改,這違背了閉包原則,所以,從設計角度考慮,有一定的問題,如何解決?就用到工廠方法模式,建立一個工廠介面和建立多個工廠實現類,這樣一旦需要增加新的功能,直接增加新的工廠類就可以了,不需要修改之前的程式碼。

請看例子:

  1. publicinterface Sender {  
  2.     publicvoid Send();  
  3. }  

兩個實現類:

  1. publicclass MailSender implements Sender {  
  2.     @Override
  3.     publicvoid Send() {  
  4.         System.out.println("this is mailsender!");  
  5.     }  
  6. }  
  1. publicclass SmsSender implements Sender {  
  2.     @Override
  3.     publicvoid Send() {  
  4.         System.out.println("this is sms sender!");  
  5.     }  
  6. }  

兩個工廠類:

  1. publicclass SendMailFactory implements
     Provider {  
  2.     @Override
  3.     public Sender produce(){  
  4.         returnnew MailSender();  
  5.     }  
  6. }  
  1. publicclass SendSmsFactory implements Provider{  
  2.     @Override
  3.     public Sender produce() {  
  4.         returnnew SmsSender();  
  5.     }  
  6. }  

在提供一個介面:

  1. publicinterface Provider {  
  2.     public
     Sender produce();  
  3. }  

測試類:

  1. publicclass Test {  
  2.     publicstaticvoid main(String[] args) {  
  3.         Provider provider = new SendMailFactory();  
  4.         Sender sender = provider.produce();  
  5.         sender.Send();  
  6.     }  
  7. }  

其實這個模式的好處就是,如果你現在想增加一個功能:發及時資訊,則只需做一個實現類,實現Sender介面,同時做一個工廠類,實現Provider介面,就OK了,無需去改動現成的程式碼。這樣做,拓展性較好!