設計模式之二工廠方法模式
阿新 • • 發佈:2019-02-02
1、工廠方法模式(Factory Method)
簡單工廠模式有一個問題就是,類的建立依賴工廠類,也就是說,如果想要拓展程式,必須對工廠類進行修改,這違背了閉包原則,所以,從設計角度考慮,有一定的問題,如何解決?就用到工廠方法模式,建立一個工廠介面和建立多個工廠實現類,這樣一旦需要增加新的功能,直接增加新的工廠類就可以了,不需要修改之前的程式碼。
請看例子:
- publicinterface Sender {
- publicvoid Send();
- }
兩個實現類:
-
publicclass MailSender implements Sender {
- @Override
- publicvoid Send() {
- System.out.println("this is mailsender!");
- }
- }
- publicclass SmsSender implements Sender {
- @Override
- publicvoid Send() {
- System.out.println("this is sms sender!");
- }
- }
兩個工廠類:
-
publicclass SendMailFactory implements
- @Override
- public Sender produce(){
- returnnew MailSender();
- }
- }
- publicclass SendSmsFactory implements Provider{
- @Override
- public Sender produce() {
- returnnew SmsSender();
- }
- }
在提供一個介面:
- publicinterface Provider {
-
public
- }
測試類:
- publicclass Test {
- publicstaticvoid main(String[] args) {
- Provider provider = new SendMailFactory();
- Sender sender = provider.produce();
- sender.Send();
- }
- }
其實這個模式的好處就是,如果你現在想增加一個功能:發及時資訊,則只需做一個實現類,實現Sender介面,同時做一個工廠類,實現Provider介面,就OK了,無需去改動現成的程式碼。這樣做,拓展性較好!