目的
封装一个对象的构造过程,并允许按步骤构造。
类图

实现
以下是一个简易的 StringBuilder 实现,参考了 JDK1.8 源码。
public class AbstractStringBuilder{protected char[] value;protected int count;public AbstractStringBuilder(int capacity){count = 0;value = new char[capacity];}public AbstractStringBuilder append(char c){ensuseCapacityInternal(count + 1);value[count++] = c;return this;}private void ensuseCapacityInternal(int minimumCapacity){//overflow-conscious codeif(minimumCapacity - value.length > 0)expandCapacity(minimumCapacity);}void expandCapacity(int minimumCapacity){int newCapacity = value.length * 2 + 2;if(newCapacity - minimumCapacity < 0)newCapacity = minimumCapacity;if(newCapacity < 0){if(minimumCapacity < 0) //overflowthrow new OutOfMemoryError();new Capacity = Integer.MAX_VALUE;}value = Arrays.copyOf(value, newCapacity);}}public class StringBuilder extends AbstractStringBuilder{public StringBuilder(){super(16);}@Overridepublic String toString(){//Create a copy, don't share the arrayreturn new String(value, 0, count);}}public class Client{public static void main(String[] args){StringBuilder sb = new StringBuilder();final int count = 26;for(int i = 0; i < count; i++){sb.append((char) ('a' + i));}System.out.println(sb.toString());}}运行结果abcdefghijklmnopqrstuvwxyz
