StringBuilder和Builder Pattern

16 stringbuilder design-patterns builder

我是设计模式的新手,所以我有一个关于Builder模式的问题.今天我听说Builder Pattern与StringBuilderJava中的类C#不同.我知道Builder Pattern的主要目标是在几个步骤中创建复杂的对象......我认为这是StringBuilder用它的方法制作的Append...所以我很难找到差异......

你能告诉我是否真的有什么不同,如果是......它是什么:)?

Pau*_*sik 19

听起来你可能会混淆StringBuilder类和Builder Design Pattern.它们实际上是两个非常不同的想法.

StringBuilderJava.NET中的一个类,允许更高性能的字符串操作:(来自MSDN)

String对象是不可变的.每次使用System.String类中的某个方法时,都会在内存中创建一个新的字符串对象,这需要为该新对象分配新的空间.在需要对字符串执行重复修改的情况下,与创建新String对象相关的开销可能很高.如果要在不创建新对象的情况下修改字符串,可以使用System.Text.StringBuilder类.例如,使用StringBuilder类可以在循环中将多个字符串连接在一起时提高性能.

另一方面,Builder Pattern是一种设计模式,它是一组用于组织复杂代码的类和/或接口:

构建器模式是一种软件设计模式.目的是抽象构造对象的步骤,以便这些步骤的不同实现可以构造对象的不同表示.通常,构建器图案用于根据复合图案(结构图案)构建产品.

简单地向现有字符串添加更多字符的Append方法StringBuilder.没有创建新对象(构建器模式的基本功能),并且不涉及设计模式.它是对单个对象实例的单个方法调用.

  • 非常欢迎你.欢迎来到SO! (2认同)

jk_*_*jk_ 7

  1. 目的不同.String Builder帮助构建String,Builder模式将对象的构造与其表示分开.
  2. 不同的结构.String Builder有两个协作者,Builder模式有四个协作者.

ad 1) String的创建没有抽象.例如,树结构是抽象,可以由对象或XML文件(实现)表示.

ad 2)使用StringBuilderobject时,有两个协作者:

  1. Client
  2. StringBuilder

使用时Builder Pattern,有四个合作者:

  1. Director- 它说Abstract Builder什么是构造步骤(在树结构的情况下,步骤是:创建root,添加子,...)
  2. Abstract Builder- 是使用的抽象Director.
  3. Concrete Builder- 是Abstract Builder(可能是XMLBuilder,ObjectBuilder,...)的具体实现
  4. Client- 说要Director开始施工.