回答

2

不,我們不違反。

當我們告訴 Factory類來創建一個對象實例時,所有的責任都在Factory類中。調用者對具體的類沒有影響。

工廠類本身也不會違反該規則。它正在做它必須做的事情:基於給定的規則(讓它被硬編碼或外部設置,或者更復雜一些)決定要生成什麼樣的對象。但是,每一個邏輯都在工廠方法中。

+0

但是例如Factory類正在根據http://www.oodesign.com/factory-pattern.html示例中的Product狀態進行決策。 (詢問產品,然後做出決定) – Masoud

+1

你的意思是根據產品ID?這不是問題,因爲只有Factory類可以知道所有可能的類,並且它具有決定使用哪個類的邏輯。你不能把這個責任委託給其他任何班級。 – gaborsch

相關問題