簡單工廠與工廠方法模式

2021-08-31 12:37:03 字數 3292 閱讀 8273

簡單工廠模式:由乙個工廠物件決定建立出哪一種產品類的例項。

1.簡單工廠模式是屬於建立型模式,又叫做靜態工廠方法模式,但不屬於23種gof設計模式之一。

2.優點:工廠類是整個模式的關鍵.包含了必要的邏輯判斷,根據外界給定的資訊,決定究竟應該

建立哪個具體類的物件.通過使用工廠類,外界可以從直接建立具體產品物件的尷尬局面擺脫出來,

僅僅需要負責「消費」物件就可以了。而不必管這些物件究竟如何建立及如何組織的.明確了各自的

職責和權利,有利於整個軟體體系結構的優化。

3.缺點:由於工廠類集中了所有例項的建立邏輯,違反了高內聚責任分配原則,將全部建立邏輯集中到

了乙個工廠類中;它所能建立的類只能是事先考慮到的,如果需要新增新的類,則就需要改變工廠類了。

可通過工廠方法模式克服該缺點。

/**

* 演算法操作基類

*/public class operation

public double getnumbera()

public void setnumbera(double numbera)

public double getnumberb()

public void setnumberb(double numberb)

}

/**

* 實現加法的具體運算,繼承運算類

*/public class operationadd extends operation

}

/**

* 實現減法的具體運算,繼承運算類

*/public class operationsub extends operation

}

/**

* 實現乘法的具體運算,繼承運算類

*/public class operationmul extends operation

}

/**

* 實現除法的具體運算,繼承運算類

*/public class operationdiv extends operation

result = getnumbera() / getnumberb();

return result;

}}

/**

* 運算子操作符列舉類

*/public enum operateenum

/**

* 簡單運算工廠類

*/public class operationfactory

return oper;

}}

public class main 

}

工廠方法模式:定義乙個用於建立物件的介面,讓子類決定例項化哪乙個類。

工廠方法使乙個類的例項化延遲到其子類。

與簡單工廠模式的對比:

1.簡單工廠模式的最大優點在於工廠類中包含了必要的邏輯判斷,根據客戶端的選擇條件動態

例項化相關的類,對於客戶端來說,去除了與具體的產品的依賴。

缺點是對擴充套件開放,對修改也開放,違背了開放-封閉原則。

2.工廠方法模式的優點是克服了簡單工廠違背了開放-封閉原則的缺點,又保持了封裝物件建立

過程的優點,是簡單工廠模式的進一步抽象和推廣。

缺點是每新增乙個產品,就得新增乙個產品工廠的類。    

工廠方法模式例項:

/**

* 演算法操作基類

* */

public class operation

public double getnumbera()

public void setnumbera(double numbera)

public double getnumberb()

public void setnumberb(double numberb)

}

/**

* 實現加法的具體運算,繼承運算類

*/public class operationadd extends operation

}

/**

* 實現減法的具體運算,繼承運算類

*/public class operationsub extends operation

}

/**

* 實現乘法的具體運算,繼承運算類

*/public class operationmul extends operation

}

/**

* 實現除法的具體運算,繼承運算類

*/public class operationdiv extends operation

result = getnumbera() / getnumberb();

return result;

}}

/**

* 運算類工廠介面

* */

public inte***ce ifactory

/**

* 加法類工廠

* */

public class factoryadd implements ifactory

}

/**

* 減法類工廠

* */

public class factorysub implements ifactory

}

/**

* 乘法類工廠

* */

public class factorymul implements ifactory

}

/**

* 除法類工廠

* */

public class factorydiv implements ifactory

}

/**

* 工廠方法例項(計算器工廠)

* */

public class main

}

簡單工廠模式與工廠方法模式

簡單工廠模式是屬於建立型模式,又叫做 靜態工廠方法 static factory method 模式,但不屬於23種gof設計模式之一。簡單工廠模式是由乙個工廠物件決定建立出哪一種產品類的例項。簡單工廠模式是工廠模式家族中最簡單實用的模式,可以理解為是不同工廠模式的乙個特殊實現。百科 最大的優點是包...

簡單工廠模式與工廠方法模式

工廠模式是建立模式,主要是為建立物件提供過渡介面 以便將建立物件的具體過程遮蔽隔離起來,達到提高靈活性的目的。工廠模式在 深入淺出設計模式 和 大話設計模式 中分為三類 這三種模式從上到下逐步抽象,並且更具有一般性。我剛開始看著 大話設計模式 學習,抽象工廠還沒看到,所以這一篇就先記一下前兩種,後面...

簡單工廠模式與工廠方法模式

簡單工廠模式,以計算器為例,結構如圖 簡單工廠模式的最大優點在於工廠類中包含了必要的邏輯判斷,根據客戶端的選擇條件動態例項化相關的類,對於客戶端來說,去除了與具體產品的依賴。問題在於,如果增加乙個子功能,需要新增相應的子類外,還要修改原有的工廠類,增加case判斷,修改原有的類,這就違背了 開放 封...