工廠三兄弟之簡單工廠模式(三)
3 完整解決方案
為了將Chart類的職責分離,同時將Chart物件的建立和使用分離,Sunny軟體公司開發人員決定使用簡單工廠模式對圖表庫進行重構,重構後的結構如圖2所示:
圖2 圖表庫結構圖
在圖2中,Chart介面充當抽象產品類,其子類HistogramChart、PieChart和LineChart充當具體產品類,ChartFactory充當工廠類。完整程式碼如下所示:
//抽象圖表介面:抽象產品類
interface Chart {
public void display();
}
//柱狀圖類:具體產品類
class HistogramChart implements Chart {
public HistogramChart() {
System.out.println("建立柱狀圖!");
}
public void display() {
System.out.println("顯示柱狀圖!");
}
}
//餅狀圖類:具體產品類
class PieChart implements Chart {
public PieChart() {
System.out.println("建立餅狀圖!");
}
public void display() {
System.out.println("顯示餅狀圖!");
}
}
//折線圖類:具體產品類
class LineChart implements Chart {
public LineChart() {
System.out.println("建立折線圖!");
}
public void display() {
System.out.println("顯示折線圖!");
}
}
//圖表工廠類:工廠類
class ChartFactory {
//靜態工廠方法
public static Chart getChart(String type) {
Chart chart = null;
if (type.equalsIgnoreCase("histogram")) {
chart = new HistogramChart();
System.out.println("初始化設定柱狀圖!");
}
else if (type.equalsIgnoreCase("pie")) {
chart = new PieChart();
System.out.println("初始化設定餅狀圖!");
}
else if (type.equalsIgnoreCase("line")) {
chart = new LineChart();
System.out.println("初始化設定折線圖!");
}
return chart;
}
}
編寫如下客戶端測試程式碼:
class Client {
public static void main(String args[]) {
Chart chart;
chart = ChartFactory.getChart("histogram"); //通過靜態工廠方法建立產品
chart.display();
}
}
編譯並執行程式,輸出結果如下:
建立柱狀圖! 初始化設定柱狀圖! 顯示柱狀圖! |
在客戶端測試類中,我們使用工廠類的靜態工廠方法建立產品物件,如果需要更換產品,只需修改靜態工廠方法中的引數即可,例如將柱狀圖改為餅狀圖,只需將程式碼:
chart = ChartFactory.getChart("histogram"); |
改為:
chart = ChartFactory.getChart("pie"); |
編譯並執行程式,輸出結果如下:
建立餅狀圖! 初始化設定餅狀圖! 顯示餅狀圖! |
【作者:劉偉 http://blog.csdn.net/lovelion】
相關文章
- 工廠三兄弟之簡單工廠模式(二)模式
- 工廠三兄弟之簡單工廠模式(一)模式
- 工廠三兄弟之抽象工廠模式(二)抽象模式
- 工廠三兄弟之抽象工廠模式(一)抽象模式
- 工廠三兄弟之工廠方法模式(一)模式
- 設計模式 - 工廠三兄弟設計模式
- 設計模式-建立型模式-工廠模式(工廠三兄弟) TypeScript設計模式TypeScript
- 工廠模式之簡單工廠模式模式
- 簡單工廠模式—>工廠模式模式
- 設計模式系列之工廠模式三兄弟(Factory Pattern)設計模式
- 設計模式之工廠模式!深入解析簡單工廠模式,工廠方法模式和抽象工廠模式設計模式抽象
- 簡單工廠模式、工廠模式、抽象工廠模式比較模式抽象
- 簡單工廠和工廠模式模式
- 簡單工廠、工廠方法和抽象工廠模式抽象模式
- 設計模式-簡單工廠、工廠方法模式、抽象工廠模式設計模式抽象
- 簡單工廠模式和抽象工廠模式模式抽象
- 工廠模式(簡單工廠模式)快速理解模式
- 一篇搞定工廠模式【簡單工廠、工廠方法模式、抽象工廠模式】模式抽象
- Java設計模式之簡單工廠、工廠方法和抽象工廠Java設計模式抽象
- 建立型:工廠模式-簡單工廠模式
- 簡單工廠和工廠方法模式模式
- 設計模式學習筆記(三)簡單工廠、工廠方法和抽象工廠之間的區別設計模式筆記抽象
- 設計模式之工廠模式(三)設計模式
- 簡單工廠、工廠模式初學習模式
- C# 設計模式(1)——簡單工廠模式、工廠模式、抽象工廠模式C#設計模式抽象
- 簡單工廠模式模式
- 簡單工廠模式、工廠方法模式和抽象工廠模式有何區別?模式抽象
- 【Java】簡單工廠模式、工廠模式、介面卡模式Java模式
- 設計模式之簡單工廠模式設計模式
- 簡單工廠,工廠方法和抽象工廠抽象
- 設計模式(三)——工廠模式設計模式
- 簡單工廠模式--SimpleFactory模式
- 無廢話設計模式(1)--簡單工廠、工廠方法、抽象工廠設計模式抽象
- golang設計模式之簡單工廠模式Golang設計模式
- 簡單工廠 VS 工廠方法 VS 抽象工廠抽象
- 簡單工廠,工廠方法和抽象工廠模式(我也湊湊熱鬧)抽象模式
- 談談三種工廠模式模式
- 設計模式(三):抽象工廠設計模式抽象