#107 Composite example JavaDoc
This commit is contained in:
		@@ -1,25 +1,29 @@
 | 
			
		||||
package com.iluwatar.composite;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * 
 | 
			
		||||
 * With Composite we can treat tree hierarchies of objects with uniform
 | 
			
		||||
 * interface (LetterComposite). In this example we have sentences composed of
 | 
			
		||||
 * words composed of letters.
 | 
			
		||||
 * 
 | 
			
		||||
 */
 | 
			
		||||
public class App {
 | 
			
		||||
 | 
			
		||||
	public static void main(String[] args) {
 | 
			
		||||
		System.out.println("Message from the orcs: ");
 | 
			
		||||
 | 
			
		||||
		LetterComposite orcMessage = new Messenger().messageFromOrcs();
 | 
			
		||||
		orcMessage.print();
 | 
			
		||||
 | 
			
		||||
		System.out.println("\n");
 | 
			
		||||
 | 
			
		||||
		System.out.println("Message from the elves: ");
 | 
			
		||||
 | 
			
		||||
		LetterComposite elfMessage = new Messenger().messageFromElves();
 | 
			
		||||
		elfMessage.print();
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
package com.iluwatar.composite;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * 
 | 
			
		||||
 * With Composite we can treat tree hierarchies of objects with uniform
 | 
			
		||||
 * interface ({@link LetterComposite}). In this example we have sentences composed of
 | 
			
		||||
 * words composed of letters.
 | 
			
		||||
 * 
 | 
			
		||||
 */
 | 
			
		||||
public class App {
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * Program entry point
 | 
			
		||||
	 * @param args command line args
 | 
			
		||||
	 */
 | 
			
		||||
	public static void main(String[] args) {
 | 
			
		||||
		System.out.println("Message from the orcs: ");
 | 
			
		||||
 | 
			
		||||
		LetterComposite orcMessage = new Messenger().messageFromOrcs();
 | 
			
		||||
		orcMessage.print();
 | 
			
		||||
 | 
			
		||||
		System.out.println("\n");
 | 
			
		||||
 | 
			
		||||
		System.out.println("Message from the elves: ");
 | 
			
		||||
 | 
			
		||||
		LetterComposite elfMessage = new Messenger().messageFromElves();
 | 
			
		||||
		elfMessage.print();
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -1,21 +1,26 @@
 | 
			
		||||
package com.iluwatar.composite;
 | 
			
		||||
 | 
			
		||||
public class Letter extends LetterComposite {
 | 
			
		||||
 | 
			
		||||
	private char c;
 | 
			
		||||
 | 
			
		||||
	public Letter(char c) {
 | 
			
		||||
		this.c = c;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	@Override
 | 
			
		||||
	protected void printThisBefore() {
 | 
			
		||||
		System.out.print(c);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	@Override
 | 
			
		||||
	protected void printThisAfter() {
 | 
			
		||||
		// nop
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
package com.iluwatar.composite;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * 
 | 
			
		||||
 * Letter
 | 
			
		||||
 *
 | 
			
		||||
 */
 | 
			
		||||
public class Letter extends LetterComposite {
 | 
			
		||||
 | 
			
		||||
	private char c;
 | 
			
		||||
 | 
			
		||||
	public Letter(char c) {
 | 
			
		||||
		this.c = c;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	@Override
 | 
			
		||||
	protected void printThisBefore() {
 | 
			
		||||
		System.out.print(c);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	@Override
 | 
			
		||||
	protected void printThisAfter() {
 | 
			
		||||
		// nop
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -1,53 +1,58 @@
 | 
			
		||||
package com.iluwatar.composite;
 | 
			
		||||
 | 
			
		||||
import java.util.ArrayList;
 | 
			
		||||
import java.util.Arrays;
 | 
			
		||||
import java.util.List;
 | 
			
		||||
 | 
			
		||||
public class Messenger {
 | 
			
		||||
 | 
			
		||||
	LetterComposite messageFromOrcs() {
 | 
			
		||||
 | 
			
		||||
		List<Word> words = new ArrayList<Word>();
 | 
			
		||||
 | 
			
		||||
		words.add(new Word(Arrays.asList(new Letter('W'), new Letter('h'),
 | 
			
		||||
				new Letter('e'), new Letter('r'), new Letter('e'))));
 | 
			
		||||
		words.add(new Word(Arrays.asList(new Letter('t'), new Letter('h'),
 | 
			
		||||
				new Letter('e'), new Letter('r'), new Letter('e'))));
 | 
			
		||||
		words.add(new Word(Arrays.asList(new Letter('i'), new Letter('s'))));
 | 
			
		||||
		words.add(new Word(Arrays.asList(new Letter('a'))));
 | 
			
		||||
		words.add(new Word(Arrays.asList(new Letter('w'), new Letter('h'),
 | 
			
		||||
				new Letter('i'), new Letter('p'))));
 | 
			
		||||
		words.add(new Word(Arrays.asList(new Letter('t'), new Letter('h'),
 | 
			
		||||
				new Letter('e'), new Letter('r'), new Letter('e'))));
 | 
			
		||||
		words.add(new Word(Arrays.asList(new Letter('i'), new Letter('s'))));
 | 
			
		||||
		words.add(new Word(Arrays.asList(new Letter('a'))));
 | 
			
		||||
		words.add(new Word(Arrays.asList(new Letter('w'), new Letter('a'),
 | 
			
		||||
				new Letter('y'))));
 | 
			
		||||
 | 
			
		||||
		return new Sentence(words);
 | 
			
		||||
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	LetterComposite messageFromElves() {
 | 
			
		||||
 | 
			
		||||
		List<Word> words = new ArrayList<Word>();
 | 
			
		||||
 | 
			
		||||
		words.add(new Word(Arrays.asList(new Letter('M'), new Letter('u'),
 | 
			
		||||
				new Letter('c'), new Letter('h'))));
 | 
			
		||||
		words.add(new Word(Arrays.asList(new Letter('w'), new Letter('i'),
 | 
			
		||||
				new Letter('n'), new Letter('d'))));
 | 
			
		||||
		words.add(new Word(Arrays.asList(new Letter('p'), new Letter('o'),
 | 
			
		||||
				new Letter('u'), new Letter('r'), new Letter('s'))));
 | 
			
		||||
		words.add(new Word(Arrays.asList(new Letter('f'), new Letter('r'),
 | 
			
		||||
				new Letter('o'), new Letter('m'))));
 | 
			
		||||
		words.add(new Word(Arrays.asList(new Letter('y'), new Letter('o'),
 | 
			
		||||
				new Letter('u'), new Letter('r'))));
 | 
			
		||||
		words.add(new Word(Arrays.asList(new Letter('m'), new Letter('o'),
 | 
			
		||||
				new Letter('u'), new Letter('t'), new Letter('h'))));
 | 
			
		||||
 | 
			
		||||
		return new Sentence(words);
 | 
			
		||||
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
package com.iluwatar.composite;
 | 
			
		||||
 | 
			
		||||
import java.util.ArrayList;
 | 
			
		||||
import java.util.Arrays;
 | 
			
		||||
import java.util.List;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * 
 | 
			
		||||
 * Messenger
 | 
			
		||||
 *
 | 
			
		||||
 */
 | 
			
		||||
public class Messenger {
 | 
			
		||||
 | 
			
		||||
	LetterComposite messageFromOrcs() {
 | 
			
		||||
 | 
			
		||||
		List<Word> words = new ArrayList<Word>();
 | 
			
		||||
 | 
			
		||||
		words.add(new Word(Arrays.asList(new Letter('W'), new Letter('h'),
 | 
			
		||||
				new Letter('e'), new Letter('r'), new Letter('e'))));
 | 
			
		||||
		words.add(new Word(Arrays.asList(new Letter('t'), new Letter('h'),
 | 
			
		||||
				new Letter('e'), new Letter('r'), new Letter('e'))));
 | 
			
		||||
		words.add(new Word(Arrays.asList(new Letter('i'), new Letter('s'))));
 | 
			
		||||
		words.add(new Word(Arrays.asList(new Letter('a'))));
 | 
			
		||||
		words.add(new Word(Arrays.asList(new Letter('w'), new Letter('h'),
 | 
			
		||||
				new Letter('i'), new Letter('p'))));
 | 
			
		||||
		words.add(new Word(Arrays.asList(new Letter('t'), new Letter('h'),
 | 
			
		||||
				new Letter('e'), new Letter('r'), new Letter('e'))));
 | 
			
		||||
		words.add(new Word(Arrays.asList(new Letter('i'), new Letter('s'))));
 | 
			
		||||
		words.add(new Word(Arrays.asList(new Letter('a'))));
 | 
			
		||||
		words.add(new Word(Arrays.asList(new Letter('w'), new Letter('a'),
 | 
			
		||||
				new Letter('y'))));
 | 
			
		||||
 | 
			
		||||
		return new Sentence(words);
 | 
			
		||||
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	LetterComposite messageFromElves() {
 | 
			
		||||
 | 
			
		||||
		List<Word> words = new ArrayList<Word>();
 | 
			
		||||
 | 
			
		||||
		words.add(new Word(Arrays.asList(new Letter('M'), new Letter('u'),
 | 
			
		||||
				new Letter('c'), new Letter('h'))));
 | 
			
		||||
		words.add(new Word(Arrays.asList(new Letter('w'), new Letter('i'),
 | 
			
		||||
				new Letter('n'), new Letter('d'))));
 | 
			
		||||
		words.add(new Word(Arrays.asList(new Letter('p'), new Letter('o'),
 | 
			
		||||
				new Letter('u'), new Letter('r'), new Letter('s'))));
 | 
			
		||||
		words.add(new Word(Arrays.asList(new Letter('f'), new Letter('r'),
 | 
			
		||||
				new Letter('o'), new Letter('m'))));
 | 
			
		||||
		words.add(new Word(Arrays.asList(new Letter('y'), new Letter('o'),
 | 
			
		||||
				new Letter('u'), new Letter('r'))));
 | 
			
		||||
		words.add(new Word(Arrays.asList(new Letter('m'), new Letter('o'),
 | 
			
		||||
				new Letter('u'), new Letter('t'), new Letter('h'))));
 | 
			
		||||
 | 
			
		||||
		return new Sentence(words);
 | 
			
		||||
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -1,23 +1,28 @@
 | 
			
		||||
package com.iluwatar.composite;
 | 
			
		||||
 | 
			
		||||
import java.util.List;
 | 
			
		||||
 | 
			
		||||
public class Sentence extends LetterComposite {
 | 
			
		||||
 | 
			
		||||
	public Sentence(List<Word> words) {
 | 
			
		||||
		for (Word w : words) {
 | 
			
		||||
			this.add(w);
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	@Override
 | 
			
		||||
	protected void printThisBefore() {
 | 
			
		||||
		// nop
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	@Override
 | 
			
		||||
	protected void printThisAfter() {
 | 
			
		||||
		System.out.print(".");
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
package com.iluwatar.composite;
 | 
			
		||||
 | 
			
		||||
import java.util.List;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * 
 | 
			
		||||
 * Sentence
 | 
			
		||||
 *
 | 
			
		||||
 */
 | 
			
		||||
public class Sentence extends LetterComposite {
 | 
			
		||||
 | 
			
		||||
	public Sentence(List<Word> words) {
 | 
			
		||||
		for (Word w : words) {
 | 
			
		||||
			this.add(w);
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	@Override
 | 
			
		||||
	protected void printThisBefore() {
 | 
			
		||||
		// nop
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	@Override
 | 
			
		||||
	protected void printThisAfter() {
 | 
			
		||||
		System.out.print(".");
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -1,23 +1,28 @@
 | 
			
		||||
package com.iluwatar.composite;
 | 
			
		||||
 | 
			
		||||
import java.util.List;
 | 
			
		||||
 | 
			
		||||
public class Word extends LetterComposite {
 | 
			
		||||
 | 
			
		||||
	public Word(List<Letter> letters) {
 | 
			
		||||
		for (Letter l : letters) {
 | 
			
		||||
			this.add(l);
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	@Override
 | 
			
		||||
	protected void printThisBefore() {
 | 
			
		||||
		System.out.print(" ");
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	@Override
 | 
			
		||||
	protected void printThisAfter() {
 | 
			
		||||
		// nop
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
package com.iluwatar.composite;
 | 
			
		||||
 | 
			
		||||
import java.util.List;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * 
 | 
			
		||||
 * Word
 | 
			
		||||
 *
 | 
			
		||||
 */
 | 
			
		||||
public class Word extends LetterComposite {
 | 
			
		||||
 | 
			
		||||
	public Word(List<Letter> letters) {
 | 
			
		||||
		for (Letter l : letters) {
 | 
			
		||||
			this.add(l);
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	@Override
 | 
			
		||||
	protected void printThisBefore() {
 | 
			
		||||
		System.out.print(" ");
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	@Override
 | 
			
		||||
	protected void printThisAfter() {
 | 
			
		||||
		// nop
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -1,14 +1,19 @@
 | 
			
		||||
package com.iluwatar.composite;
 | 
			
		||||
 | 
			
		||||
import org.junit.Test;
 | 
			
		||||
 | 
			
		||||
import com.iluwatar.composite.App;
 | 
			
		||||
 | 
			
		||||
public class AppTest {
 | 
			
		||||
 | 
			
		||||
	@Test
 | 
			
		||||
	public void test() {
 | 
			
		||||
		String[] args = {};
 | 
			
		||||
		App.main(args);
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
package com.iluwatar.composite;
 | 
			
		||||
 | 
			
		||||
import org.junit.Test;
 | 
			
		||||
 | 
			
		||||
import com.iluwatar.composite.App;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * 
 | 
			
		||||
 * Application test
 | 
			
		||||
 *
 | 
			
		||||
 */
 | 
			
		||||
public class AppTest {
 | 
			
		||||
 | 
			
		||||
	@Test
 | 
			
		||||
	public void test() {
 | 
			
		||||
		String[] args = {};
 | 
			
		||||
		App.main(args);
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user