Java設計模式之-抽象工廠模式

Java設計模式之-抽象工廠模式

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

這裏寫圖片描述

1、創建共同功能接口

public interface Sender {  
     public void Send();  
}

2、兩個實現類:

// 實現類 MailSender
class MailSender implements Sender {  
    @Override  
    public void send() {  
        System.out.println("this is Mailsender!");  
    }  
}  

//實現類 SmsSender
class SmsSender implements Sender{
    public void send(){
        System.out.println("this is SmsSender");
    }
}

3、兩個工廠類:

// 兩個工廠類
class SendMailFactory implements Provider{
    public Sender produce(){
        return new MailSender();
    }
}

class SendSmsFactory implements Provider{
    public Sender produce(){
        return new SmsSender();
    }
}

4、工廠類實現的接口

interface Provider
{
    public Sender produce();
}

5、測試類

public class AbstractFactory {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Provider provider=new SendMailFactory();
        Sender sender=provider.produce();
        sender.send();
    }
}

輸出結果:this is Mailsender!

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

發佈了61 篇原創文章 · 獲贊 7 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章