工廠模式
- 什麼時候使用:咱們明確地計劃不一樣條件下建立不一樣實例時。主要解決接口選擇的問題。
- 如何解決:定義一個工廠接口,讓工廠類實現工廠接口。讓調用者本身經過參數傳遞決定實例化建立哪個工廠類,返回的是一個抽象的工廠產品實例。
- 使用場景: 一、日誌記錄器:記錄可能記錄到本地硬盤、系統事件、遠程服務器等,用戶能夠選擇記錄日誌到什麼地方。 二、數據庫訪問,當用戶不知道最後系統採用哪一類數據庫,以及數據庫可能有變化時。 三、設計一個鏈接服務器的框架,須要三個協議,"POP3"、"IMAP"、"HTTP",能夠把這三個做爲產品類,共同實現一個接口。
- 注意事項:複雜對象適合使用工廠模式,而簡單對象,特別是只須要經過 new 就能夠完成建立的對象,無需使用工廠模式。若是使用工廠模式,就須要引入一個工廠類,會增長系統的複雜度。
調用者經過參數傳遞到getShape(String)決定實例化哪個Shape
publicclassShapeFactory{
//使用 getShape 方法獲取形狀類型的對象
publicShape getShape(String shapeType){
if(shapeType == null){
return null;
}
if(shapeType.equalsIgnoreCase("CIRCLE")){
returnnewCircle();
}elseif(shapeType.equalsIgnoreCase("RECTANGLE")){
returnnewRectangle();
}elseif(shapeType.equalsIgnoreCase("SQUARE")){
returnnewSquare();
}
return null;
}
}