我正在学习GoF Java设计模式,我想看看它们的一些真实例子.Java核心库中这些设计模式的一些很好的例子是什么?
什么时候在对象中使用工厂方法而不是Factory类是个好主意?
何时使用Factory方法模式?
请提供一些具体的想法何时在项目中使用它?以及它如何比新关键字更好的方式?
使用工厂而不是构造函数来创建对象的阈值是多少?
利弊
更新:我在我的项目中应用Domain Driven Design的工厂模式.创建工厂背后的原因之一是减少域模型中的噪声.
谢谢
什么是这家工厂,使用工厂模式的优势是什么?它是否提供可插拔架构?为什么它被称为"工厂"?
所以,谈到工厂的主题,我想知道他们是如何建立的.
从我的立场,我可以看到3种类型的工厂:
一体
一个工厂,基本上包含应用程序中使用的所有类.感觉它只是为了拥有一个工厂而拥有一个工厂,而且并不真正感觉有条理.
示例(其中ClassA,Class B和ClassC没有任何共同之处,除非在同一个App中):
class Factory
{
public static function buildClassA()
public static function buildClassB()
public static function buildClassC()
}
Run Code Online (Sandbox Code Playgroud)
提供的代码示例使用PHP.但是,这个问题与语言无关.
内置工厂
下一个是将静态函数与常规函数混合,以便创建特殊的创建模式(请参阅此问题)
例:
class ClassA
{
public static function buildClass()
public function __construct()
}
Run Code Online (Sandbox Code Playgroud)
工厂在旁边
我能想到的最后一个是为个别班级或个别班级设立工厂.这似乎可变,以统一的方式使用.
示例(其中ClassA,B和C相关,并且1,2和3相关):
class FactoryAlpha
{
public static function buildClassA()
public static function buildClassB()
public static function buildClassC()
}
class FactoryNumeric
{
public static function buildClass1()
public static function buildClass2()
public static function buildClass3()
}
Run Code Online (Sandbox Code Playgroud)
我的问题是:所有这些糟糕的想法,其中任何一个都是坏主意吗?还有其他创建工厂的方法吗?这些中的任何一个都是好主意吗?什么是创建工厂的好/最佳方式.