我已经阅读了相关内容,理解了其基本功能——我想知道一个常见的、真实生活中使用该模式的例子。
作为参考,我主要从事商业应用程序开发,包括 web 和 windows 平台,并使用 Microsoft 技术栈。
我已经阅读了相关内容,理解了其基本功能——我想知道一个常见的、真实生活中使用该模式的例子。
作为参考,我主要从事商业应用程序开发,包括 web 和 windows 平台,并使用 Microsoft 技术栈。
主要应用场景:
总之,建造者模式可以保持构造函数简单,同时实现不可变性。
虽然你说的是C#,但这里提供一个简单的Java示例:
StringBuilder sb = new StringBuilder();
sb.append("Hello");
sb.append(" ");
sb.append("World!");
System.out.println(sb.toString());
与之相反:
String msg = "";
msg += "Hello";
msg += " ";
msg += "World!";
System.out.println(msg);
编辑:您会在我的评论中看到,我可能匆忙回答了这个问题,并在过程中混淆了自己。我将继续编辑此内容以适用于抽象工厂,因为我认为这是我最初的意图,但请注意,这主要是供参考,不一定是对原始问题的回应。
我见过的最常见的例子涉及GUI组件的构建方式。
例如,如果您正在为应用程序设计一个表单,其GUI组件可以采用多种表示形式(也许基于您运行的平台),则需要设计一个抽象工厂来处理这些组件的创建。
为了向表单添加新控件,代码可能如下所示:
public MyForm ()
{
GuiFactory factory = new Win32Factory ();
Button btn = factory.CreateButton ();
btn.Text = "Go!"
btn.Location = new Point (15, 50);
this.Controls.Add (btn);
}
这符合抽象工厂模式,因为您可以创建不同的工厂对象实例来创建所创建对象的不同表示形式,而无需更改客户端代码(这是一个基本示例,但通常情况下,您不会使用 new 创建 Win32Factory,而是通过其他抽象获取)。
有时候,为了更好地理解设计模式,可以考虑与软件无关的设计模式示例。
我现在正在开发一个系统,它使用构建器来创建订单。订单是由几个其他类组成的类。我的构建器创建和验证相关类,如果所有类都有效,则创建订单类的实例。这样,我就可以确保我永远不会有缺少数据的订单实例。