构建器设计模式的实际用途是什么?

alc*_*cal 4 c# architecture design-patterns

我已经读过它了,我理解它的基本功能 - 我想知道一个常见的,现实生活中使用这种模式的例子.

作为参考,我主要使用Microsoft堆栈来处理业务应用程序,Web和Windows.

JP *_*oto 5

想想行程建设者.有很多东西可以添加到你的行程如酒店,租车,航空公司航班和每个基数为0至*.爱丽丝可能有车和酒店,而鲍勃可能有两个航班,没有汽车和三个酒店.

要创建一个混凝土工厂甚至抽象工厂来吐出行程是非常困难的.您需要的是一个工厂,您可以在其中执行不同的步骤,执行某些步骤,而其他步骤则不会,并且通常会在创建过程中生成非常不同类型的对象.

通常,只有在需要对过程进行更高的颗粒控制时,才应从工厂开始并转到构建器.

此外,Data&Object Factory还有一个很好的描述,代码示例和UML .


Chr*_*lan 5

关键用例:

  • 当最终结果是不可变的时,但使用构造函数完成所有操作会太复杂
  • 当我想部分构建某些东西并重用部分构建的东西时,每次都要在最后定制它
  • 当你从工厂模式开始,但工厂正在建造的东西有太多的排列

总之,构建器使构造函数保持简单,但允许不变性.

你说过C#,但这是一个简单的Java例子:

StringBuilder sb = new StringBuilder();
sb.append("Hello");
sb.append(" ");
sb.append("World!");
System.out.println(sb.toString());
Run Code Online (Sandbox Code Playgroud)

相反:

String msg = "";
msg += "Hello";
msg += " ";
msg += "World!";
System.out.println(msg);
Run Code Online (Sandbox Code Playgroud)