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