JavaSE:普通工廠模式
阿新 • • 發佈:2021-06-30
1. 類圖結構
2. 程式碼
public interface Sender { // 自定義抽象方法,來描述傳送的行為 void send(); }
public class MailSender implements Sender { @Override public void send() { print("正在傳送郵件..."); } }
public class SmsSender implements Sender { @Override public void send() { print("正在傳送簡訊..."); } }
工廠類:
public class SendFactory { // 自定義成員方法,實現物件的建立 public Sender produce (String type){
// <1> 拓展性和可維護性的體現:
// print("隨便加一句列印進行測試..."); if ( "mail".equals(type) ){ return new MailSender(); } if ( "sms".equals(type) ){return new SmsSender(); } return null; } }
測試類:
public class SendFactoryTest { main() { // 1. 宣告工廠型別的引用,指向工廠類型別的物件 SendFactory sf = new SendFactory(); // 2. 呼叫工廠類中的生產方法,來實現sender物件的建立 Sender sender = sf.produce("mail"); // 3. 使用sender物件,呼叫send()方法,模擬傳送資料的行為sender.send(); // 輸出: "正在傳送郵件..."
// 這樣寫的優點:拓展性和可維護性更強, 尤其是建立大量物件的前提下 (見<1>)
================== 等價於 ===================================
Sender sender1 = new MailSender();
sender1.send();
// 這樣寫的優點: 程式碼簡單,可讀性強, 在建立單個物件時有優勢
} }