經常使用設計模式之抽象工廠模式

  前面說過了工廠方法模式,工廠方法模式有一個問題就是,類的建立依賴工廠類,也就是說,若是想要拓展程序,必須閉包

對工廠類進行修改,這違背了閉包原則,因此,從設計角度考慮,有必定的問題,如何解決?就用到抽象工廠模式,創ide

建多個工廠類,這樣一旦須要增長新的功能,直接增長新的工廠類就能夠了,不須要修改以前的代碼。

測試

例如:設計

//發送短信和郵件的接口
public interface Sender {
  public void Send();
} 接口

//發送郵件的實現類
public class MailSender implements Sender {
  public void Send() {
    System.out.println("發送郵件!");
  }
}
//發送短信的實現類
public class SmsSender implements Sender {
  public void Send() {
    System.out.println("發送短信!");
  }
} class

//給工廠類一個接口
public interface Provider {
  public Sender produce();
}
//兩個工廠的實現類
public class SendMailFactory implements Provider {
  public Sender produce(){
    return new MailSender();
  }
}
public class SendSmsFactory implements Provider{
  public Sender produce() {
    return new SmsSender();
  }
} 程序

//測試類
public class Test {

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

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

相關文章
相關標籤/搜索