我正在尝试理解工厂方法设计模式,并且遇到了多个与我脑海中的问题类似的问题,但我的问题仍然没有得到解答。
this是我在问题中提到的文章
在上面文章提到的例子中,为什么我们需要一个
HtmlDialog
和 WindowsDialog
的具体工厂,并在 main 方法中选择 Dialog
的实现之一,而不是直接从可用 Button
和 HtmlButton
这篇文章通过将按钮称为“产品”来稍微混淆了这一点。
WindowsButton
对话框可以呈现它想要的任何内容,并且代码仍然有效。它可以渲染任意数量的按钮、复选框、文本区域、铃声和口哨,并且代码仍然有效。到底要渲染的对话框是隐藏的,因此对话框的设计可以更改,并且代码仍然有效。
由于
/**
* All of the client code should work with factories and products through
* abstract interfaces. This way it does not care which factory it works
* with and what kind of product it returns.
*/
static void runBusinessLogic() {
dialog.renderWindow();
}
和
HtmlDialog
类必须覆盖
WindowsDialog
() 方法创建特定的按钮对象
对自己来说很特别。您必须为以下对象创建一个 AWT/Swing createButton
Button
和用于 WindowsDialog
类的 HTML <Button
>。对于第二个问题,在 main 方法中您通常选择
具体工厂取决于配置值。你必须开始
由于 HtmlDialog
班级是家长/创造者,因此从顶部进行选择 按钮。