設計模式設計模式(建立型模式)——抽象工廠模式(Abstract Factory)

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

請看例子:閉包

public interface Sender {  
    public void Send();  
}

兩個實現類:ide

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

在提供一個接口:this

public interface Provider {  
    public Sender produce();  
}

測試類:設計

public class Test {  
  
    public static void main(String[] args) {  
        Provider provider = new SendMailFactory();  
        Sender sender = provider.produce();  
        sender.Send();  
    }  
}

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

相關文章
相關標籤/搜索