2、抽象工廠模式(Abstract Factory)
工廠方法模式有一個問題就是,類的建立依賴工廠類,也就是說,如果想要拓展程式,必須對工廠類進行修改,這違背了閉包原則,是以,從設計角度考慮,有一定的問題,如何解決?就用到抽象工廠模式,建立多個工廠類,這樣一旦需要增加新的功能,直接增加新的工廠類就可以了,不需要修改之前的代碼。
請看例子:
[java] view plaincopy
public interface Sender {
public void Send();
}
兩個實作類:
public class MailSender implements Sender {
@Override
public void Send() {
System.out.println("this is mailsender!");
public class SmsSender implements Sender {
System.out.println("this is sms sender!");
兩個工廠類:
public class SendMailFactory implements Provider {
public Sender produce(){
return new MailSender();
public class SendSmsFactory implements Provider{
public Sender produce() {
return new SmsSender();
在提供一個接口:
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了,無需去改動現成的代碼。這樣做,拓展性較好!