Java設計模式之抽象工廠模式(Abstract Factory)

工廠方法模式有一個問題就是,類的創建依賴工廠類,也就是說,如果想要拓展程序,必須對工廠類進行修改,這違背了閉包原則,所以,從設計角度考慮,有一定的問題,如何解決?就用到抽象工廠模式,創建多個工廠類,這樣一旦需要增加新的功能,直接增加新的工廠類就可以了,不需要修改之前的代碼。因爲抽象工廠不太好理解,我們先看看圖,然後就和代碼,就比較容易理解。

功能接口:

public interface Sender {
    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 SendMailFactory implements Factory {  
      
    @Override  
    public Sender produce(){  
        return new MailSender();  
    }  
}
public class SendSmsFactory implements Factory{  
  
    @Override  
    public Sender produce() {  
        return new SmsSender();  
    }  

    public void process(){
        Sender sender = produce();
        sender.Send();
    }
}

工廠接口:

public interface Factory {  
    public Sender produce();  
}  

測試類:

public class Test {
    public static void main(String[] args) {
        Factory factory = new SendSmsFactory();
        factory.process(); // this is sms sender!
    }
}

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

原文地址:https://blog.csdn.net/gfuugff/article/details/86641373

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章