1 package org.apidesign.samples;
3 import java.util.ArrayList;
6 public class StringBuffer {
7 private List<String> all = new ArrayList<String>();
9 public StringBuffer() {
10 // prevent subclassing from 3rd party code
11 if (getClass() != StringBuffer.class && getClass() != StringBufferUnsynch.class) {
12 throw new IllegalStateException();
16 // BEGIN: string.buffer.factory
17 public static StringBuffer createUnsynchronized() {
18 return new StringBufferUnsynch();
20 // END: string.buffer.factory
22 public synchronized StringBuffer append(String s) {
27 public synchronized String toString() {
28 return toStringImpl();
31 final String toStringImpl() {
33 for (String s : all) {
40 final StringBuffer appendImpl(String s) {
46 private static final class StringBufferUnsynch extends StringBuffer {
48 public StringBuffer append(String s) {
52 public String toString() {
53 return toStringImpl();