#107 Composite example JavaDoc

This commit is contained in:
Ilkka Seppala 2015-08-18 22:03:41 +03:00
parent 98abe5b5b6
commit a7d25e0485
6 changed files with 188 additions and 159 deletions

View File

@ -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();
}
}

View File

@ -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
}
}

View File

@ -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);
}
}

View File

@ -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(".");
}
}

View File

@ -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
}
}

View File

@ -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);
}
}