1. 程式人生 > 其它 >JavaSE:普通工廠模式

JavaSE:普通工廠模式

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();  

     // 這樣寫的優點: 程式碼簡單,可讀性強, 在建立單個物件時有優勢
      
} }