三、設計模式之工廠模式

一、工廠方法定義

定義一個建立對象的接口,但讓實現這個接口的類來決定實例化哪一個類,工廠方法讓類的實例化推遲到子類中進行。

適用場景:
1) 建立對象須要大量重複的代碼
2) 客戶端(應用層)不依賴於產品類實例如何被建立、實現等細節
3) 一個類經過其子類來指定建立哪一個對象

優勢:
1) 用戶只須要關心所需產品對應的工廠,無須關心建立細節
2) 加入新產品符合開閉原則,提升可擴展性

缺點:
1) 類的個數容易過多,增長複雜度
2) 增長了系統的抽象性和理解難度

二、代碼演示

clipboard.png

public abstract class Video {
    public abstract void produce();
}

public class PythonVideo extends Video {
    @Override
    public void produce() {
        System.out.println("錄製Python課程視頻");
    }
}

public class JavaVideo extends Video {
    @Override
    public void produce() {
        System.out.println("錄製Java課程視頻");
    }
}
public abstract class VideoFactory {
    public abstract Video getVideo();
}

public class PythonVideoFactory extends VideoFactory {
    @Override
    public Video getVideo() {
        return new PythonVideo();
    }
}

public class JavaVideoFactory extends VideoFactory {
    @Override
    public Video getVideo() {
        return new JavaVideo();
    }
}
public class Test {
    public static void main(String[] args) {
        VideoFactory videoFactory = new PythonVideoFactory();
        Video video = videoFactory.getVideo();
        video.produce();

        videoFactory = new JavaVideoFactory();
        video = videoFactory.getVideo();
        video.produce();
    }
}
相關文章
相關標籤/搜索