Skip to content

Commit fac48d7

Browse files
deyudeyu
authored andcommitted
add composite without
1 parent e10422a commit fac48d7

7 files changed

Lines changed: 160 additions & 0 deletions

File tree

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
package composite;
2+
3+
public abstract class Brave {
4+
5+
protected String name = "No Name";
6+
7+
public void add(Brave brave){
8+
throw new UnsupportedOperationException();
9+
}
10+
public void remove(Brave brave){
11+
throw new UnsupportedOperationException();
12+
}
13+
public Brave getChild(int i){
14+
throw new UnsupportedOperationException();
15+
}
16+
public String getName(){
17+
return name;
18+
}
19+
public String getJob(){
20+
throw new UnsupportedOperationException();
21+
}
22+
public void display(){
23+
throw new UnsupportedOperationException();
24+
}
25+
}
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
package composite;
2+
3+
import java.util.ArrayList;
4+
5+
public class EmperorLegion {
6+
private ArrayList<Brave> b = new ArrayList<Brave>();
7+
private Team t1 ;
8+
private Team t2 ;
9+
private Team t3 ;
10+
public EmperorLegion(){
11+
t1 = new Team("第一軍團");
12+
t1.add(new Hero("第一騎士", "騎士"));
13+
t1.add(new Hero("第一法師", "法師"));
14+
t2 = new Team("隸屬第一軍隊別動隊");
15+
t2.add(new Hero("小騎士", "騎士"));
16+
t2.add(new Hero("小法師", "法師"));
17+
t1.add(t2);
18+
t3 = new Team("第二軍團");
19+
t3.add(new Hero("第-4騎士", "騎士"));
20+
t3.add(new Hero("第23法師", "法師"));
21+
b.add(t1);
22+
b.add(t3);
23+
}
24+
public Team getTeam1(){
25+
return t1;
26+
}
27+
public void rollcall(){
28+
for(Brave b1: b){
29+
b1.display();
30+
}
31+
}
32+
public Team getKnightTeam(){
33+
Team returnTeam = new Team("騎士團");
34+
for(Brave b1: b){
35+
try {
36+
if(b1.getJob().equals("騎士"))
37+
returnTeam.add(b1);
38+
} catch (NullPointerException e) {
39+
}
40+
}
41+
return returnTeam;
42+
}
43+
44+
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package composite;
2+
3+
4+
public class Go {
5+
public static void main(String[] args) {
6+
// 印出全部
7+
EmperorLegion el = new EmperorLegion();
8+
el.rollcall();
9+
// 印出騎士團
10+
Team t1 = el.getKnightTeam();
11+
t1.display();
12+
// 找出第二個騎士
13+
Hero h1 = (Hero)t1.getChild(1);
14+
h1.display();
15+
16+
}
17+
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package composite;
2+
3+
import util.JavaLog;
4+
5+
public class Hero extends Brave{
6+
private String Job ;
7+
public Hero(String name , String Job) {
8+
this.name = name;
9+
this.Job = Job;
10+
}
11+
@Override
12+
public String getJob() {
13+
return Job;
14+
}
15+
@Override
16+
public void display() {
17+
JavaLog.d("¾·~¡G" + Job + " ¦WºÙ¡G " + name);
18+
}
19+
}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
##合成模式
2+
____
3+
合成模式:允許你將物件合成樹狀結構,呈現[部分/整體]的階層關係。合成能讓客戶程式碼以一致的方式處理個別物件,以及合成物件。
4+
5+
把英雄分成隊伍,可以直接對英雄隊伍點名,他會列出所有隊伍裡的英雄,以及裡面子隊伍的英雄。
6+
____
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
package composite;
2+
3+
import java.util.ArrayList;
4+
5+
import util.JavaLog;
6+
7+
public class Team extends Brave{
8+
9+
private ArrayList<Brave> braves = new ArrayList<Brave>();
10+
11+
public Team(String name) {
12+
this.name = name;
13+
}
14+
15+
@Override
16+
public void add(Brave brave) {
17+
braves.add(brave);
18+
}
19+
@Override
20+
public void remove(Brave brave) {
21+
braves.remove(brave);
22+
}
23+
@Override
24+
public Brave getChild(int i) {
25+
return braves.get(i);
26+
}
27+
@Override
28+
public String getJob() {
29+
StringBuffer sb = new StringBuffer();
30+
// Iterator<Brave> iterator = braves.iterator();
31+
for( Brave b: braves){
32+
sb.append(b.getJob());
33+
}
34+
return sb.toString();
35+
}
36+
@Override
37+
public void display() {
38+
JavaLog.d(name);
39+
for(Brave b: braves){
40+
b.display();
41+
}
42+
}
43+
}

README.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,4 +89,10 @@ ____
8989
反覆器模式:讓我們能夠取得一個聚集內每一個元素,而不需要此聚集將其實踐方法曝露出來。
9090

9191
把重複訪問的演算法用反覆器包裝起來,使得要重複訪問這些物件的人,只要知道其反覆器就好,不用知道實際訪問的演算法。
92+
____
93+
##合成模式
94+
____
95+
合成模式:允許你將物件合成樹狀結構,呈現[部分/整體]的階層關係。合成能讓客戶程式碼以一致的方式處理個別物件,以及合成物件。
96+
97+
把英雄分成隊伍,可以直接對英雄隊伍點名,他會列出所有隊伍裡的英雄,以及裡面子隊伍的英雄。
9298
____

0 commit comments

Comments
 (0)