設計模式 工廠模式

2021-07-22 04:43:26 字數 1291 閱讀 7596

與簡單工廠模式相比,工廠方法模式最重要的區別是引入了抽象工廠角色,抽象工廠可以是介面,也可以是抽象類或者具體類:

假設某公司欲開發乙個系統執行日誌記錄器(logger),該記錄器可以通過多種途徑儲存系統的執行日誌,如通過檔案記錄或資料庫記錄,使用者可以通過修改配置檔案靈活地更換日誌記錄方式。

現在開發人員最初使用簡單工廠模式對日誌記錄器進行了設計:

這裡來看該工廠類的**:

//日誌記錄器工廠  

class logge***ctory

else

if("file".equalsignorecase(args))

return logger;

} }

觀察**,可以發現該設計方案具有以下缺點:

下面採用工廠方法模式來解決以上的問題。

//日誌記錄器介面:抽象產品  

inte***ce logger

// 資料庫日誌記錄器:具體產品

class databaselogger implements logger

}// 檔案日誌記錄器:具體產品

class filelogger implements logger

}// 日誌記錄器工廠介面:抽象工廠

inte***ce logge***ctory

// 資料庫日誌記錄器工廠類:具體工廠

class databaselogge***ctory implements logge***ctory

public

void

writelog()

}// 檔案日誌記錄器工廠類:具體工廠

class filelogge***ctory implements logge***ctory

public

void

writelog()

}// 客戶端測試

public

class

test

}

工廠方法模式的優缺點:

工廠方法模式適用情況:

設計模式 工廠模式 抽象工廠模式

建立物件時不會對客戶暴露建立邏輯,並且通過使用乙個共同的介面來指向建立的物件。sept1 建立乙個公共介面,將要對外開放的方法在這裡定義。sept2 建立實現介面的類,用即實現對外開放的類的方法 sept3 建立工廠,提供乙個get方法,這個方法提供返回實現類的物件 建立選擇 sept4 使用,建立...

設計模式 工廠設計模式

用於建立物件的介面,交給子類去實現 我們舉乙個生產nokia的例子 public abstract class nokiaphone先試定義了乙個抽象類,抽象出方法poweronphone 模擬手機開機的動作 public class nokia5200 extends nokiaphone pub...

設計模式 工廠設計模式

工廠模式分為工廠方法模式和抽象工廠模式 工廠方法模式分為 普通工廠模式,就是建立乙個工廠類,對實現了同一介面的一些類進行例項的建立。多個工廠方法模式,是對普通工廠方法模式的改進,在普通工廠方法模式中,如果傳遞的字串出錯,則不能正確建立物件,而多個工廠方法模式是提供多個工廠方法,分別建立物件。靜態工廠...