Skip to content

Commit 39d2f98

Browse files
committed
1
1 parent 3d37441 commit 39d2f98

127 files changed

Lines changed: 2780 additions & 2365 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.classpath

Lines changed: 0 additions & 6 deletions
This file was deleted.

.project

Lines changed: 0 additions & 17 deletions
This file was deleted.

.settings/org.eclipse.jdt.core.prefs

Lines changed: 0 additions & 11 deletions
This file was deleted.
Lines changed: 24 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,25 @@
1-
package com.anxpp.designpattern.Composite;
2-
import java.util.Iterator;
3-
import java.util.List;
4-
//抽象组件
5-
public interface Component {
6-
void addFile(Component file);
7-
Component addFolder(Component folder);
8-
void removeFile(Component file);
9-
void removeFolder(Component folder);
10-
List<Component> getFiles();
11-
List<Component> getFolders();
12-
List<Component> getAll();
13-
Iterator<Component> iterator();
14-
void display();
1+
package com.anxpp.designpattern.Composite;
2+
3+
import java.util.Iterator;
4+
import java.util.List;
5+
6+
//抽象组件
7+
public interface Component {
8+
void addFile(Component file);
9+
10+
Component addFolder(Component folder);
11+
12+
void removeFile(Component file);
13+
14+
void removeFolder(Component folder);
15+
16+
List<Component> getFiles();
17+
18+
List<Component> getFolders();
19+
20+
List<Component> getAll();
21+
22+
Iterator<Component> iterator();
23+
24+
void display();
1525
}
Lines changed: 55 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,55 @@
1-
package com.anxpp.designpattern.Composite;
2-
3-
import java.util.Iterator;
4-
import java.util.List;
5-
//Leaf节点
6-
public class File implements Component{
7-
private String name;
8-
public File(String name){
9-
this.name = name;
10-
}
11-
@Override
12-
public void addFile(Component file) {}
13-
@Override
14-
public Component addFolder(Component folder) { return null; }
15-
@Override
16-
public void removeFile(Component file) {}
17-
@Override
18-
public void removeFolder(Component folder) {}
19-
@Override
20-
public List<Component> getFiles() { return null; }
21-
@Override
22-
public List<Component> getFolders() { return null; }
23-
@Override
24-
public List<Component> getAll() { return null; }
25-
@Override
26-
public Iterator<Component> iterator() { return null; }
27-
@Override
28-
public void display() {
29-
System.out.println(name);
30-
}
31-
}
1+
package com.anxpp.designpattern.Composite;
2+
3+
import java.util.Iterator;
4+
import java.util.List;
5+
6+
//Leaf节点
7+
public class File implements Component {
8+
private String name;
9+
10+
public File(String name) {
11+
this.name = name;
12+
}
13+
14+
@Override
15+
public void addFile(Component file) {
16+
}
17+
18+
@Override
19+
public Component addFolder(Component folder) {
20+
return null;
21+
}
22+
23+
@Override
24+
public void removeFile(Component file) {
25+
}
26+
27+
@Override
28+
public void removeFolder(Component folder) {
29+
}
30+
31+
@Override
32+
public List<Component> getFiles() {
33+
return null;
34+
}
35+
36+
@Override
37+
public List<Component> getFolders() {
38+
return null;
39+
}
40+
41+
@Override
42+
public List<Component> getAll() {
43+
return null;
44+
}
45+
46+
@Override
47+
public Iterator<Component> iterator() {
48+
return null;
49+
}
50+
51+
@Override
52+
public void display() {
53+
System.out.println(name);
54+
}
55+
}
Lines changed: 77 additions & 64 deletions
Original file line numberDiff line numberDiff line change
@@ -1,64 +1,77 @@
1-
package com.anxpp.designpattern.Composite;
2-
import java.util.ArrayList;
3-
import java.util.Iterator;
4-
import java.util.List;
5-
public class Folder implements Component {
6-
private String name;
7-
private List<Component> files;
8-
private List<Component> folders;
9-
public Folder(String name){
10-
this.name = name;
11-
files = new ArrayList<Component>();
12-
folders = new ArrayList<Component>();
13-
}
14-
@Override
15-
public void addFile(Component file) {
16-
files.add(file);
17-
}
18-
@Override
19-
public Component addFolder(Component folder) {
20-
folders.add(folder);
21-
return this;
22-
}
23-
@Override
24-
public void removeFile(Component file) {
25-
files.remove(file);
26-
}
27-
@Override
28-
public void removeFolder(Component folder) {
29-
folders.remove(folder);
30-
}
31-
@Override
32-
public List<Component> getFiles() {
33-
return files;
34-
}
35-
@Override
36-
public List<Component> getFolders() {
37-
return folders;
38-
}
39-
@Override
40-
public List<Component> getAll() {
41-
List<Component> all = new ArrayList<Component>(folders);
42-
all.addAll(files);
43-
return all;
44-
}
45-
@Override
46-
public Iterator<Component> iterator() {
47-
List<Component> all = new ArrayList<Component>();
48-
add(all,this);
49-
return all.iterator();
50-
}
51-
private void add(List<Component> all,Component component){
52-
if(component==null) return;
53-
all.add(component);
54-
Iterator<Component> iterator = component.getFolders().iterator();
55-
while(iterator.hasNext()){
56-
add(all,iterator.next());
57-
}
58-
all.addAll(component.getFiles());
59-
}
60-
@Override
61-
public void display() {
62-
System.out.println(name);
63-
}
64-
}
1+
package com.anxpp.designpattern.Composite;
2+
3+
import java.util.ArrayList;
4+
import java.util.Iterator;
5+
import java.util.List;
6+
7+
public class Folder implements Component {
8+
private String name;
9+
private List<Component> files;
10+
private List<Component> folders;
11+
12+
public Folder(String name) {
13+
this.name = name;
14+
files = new ArrayList<Component>();
15+
folders = new ArrayList<Component>();
16+
}
17+
18+
@Override
19+
public void addFile(Component file) {
20+
files.add(file);
21+
}
22+
23+
@Override
24+
public Component addFolder(Component folder) {
25+
folders.add(folder);
26+
return this;
27+
}
28+
29+
@Override
30+
public void removeFile(Component file) {
31+
files.remove(file);
32+
}
33+
34+
@Override
35+
public void removeFolder(Component folder) {
36+
folders.remove(folder);
37+
}
38+
39+
@Override
40+
public List<Component> getFiles() {
41+
return files;
42+
}
43+
44+
@Override
45+
public List<Component> getFolders() {
46+
return folders;
47+
}
48+
49+
@Override
50+
public List<Component> getAll() {
51+
List<Component> all = new ArrayList<Component>(folders);
52+
all.addAll(files);
53+
return all;
54+
}
55+
56+
@Override
57+
public Iterator<Component> iterator() {
58+
List<Component> all = new ArrayList<Component>();
59+
add(all, this);
60+
return all.iterator();
61+
}
62+
63+
private void add(List<Component> all, Component component) {
64+
if (component == null) return;
65+
all.add(component);
66+
Iterator<Component> iterator = component.getFolders().iterator();
67+
while (iterator.hasNext()) {
68+
add(all, iterator.next());
69+
}
70+
all.addAll(component.getFiles());
71+
}
72+
73+
@Override
74+
public void display() {
75+
System.out.println(name);
76+
}
77+
}
Lines changed: 23 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,24 @@
1-
package com.anxpp.designpattern.Composite;
2-
import java.util.Iterator;
3-
public class TestUse {
4-
public static void main(String args[]){
5-
Component root = new Folder("root");//根目录
6-
Component folder1 = new Folder("java");
7-
Component folder2 = new Folder("c++");
8-
Component folder3 = new Folder("c#");
9-
Component file1 = new File("info.txt");
10-
root.addFolder(folder1).addFolder(folder2).addFolder(folder3).addFile(file1);//添加一级目录
11-
folder1.addFile(new File("info.java"));
12-
Iterator<Component> iterator = root.iterator();
13-
while(iterator.hasNext()){
14-
Component component = iterator.next();
15-
if(component instanceof Folder)
16-
System.out.print("folder:");
17-
else
18-
System.out.print("file:");
19-
component.display();
20-
}
21-
}
1+
package com.anxpp.designpattern.Composite;
2+
3+
import java.util.Iterator;
4+
5+
public class TestUse {
6+
public static void main(String[] args) {
7+
Component root = new Folder("root");//根目录
8+
Component folder1 = new Folder("java");
9+
Component folder2 = new Folder("c++");
10+
Component folder3 = new Folder("c#");
11+
Component file1 = new File("info.txt");
12+
root.addFolder(folder1).addFolder(folder2).addFolder(folder3).addFile(file1);//添加一级目录
13+
folder1.addFile(new File("info.java"));
14+
Iterator<Component> iterator = root.iterator();
15+
while (iterator.hasNext()) {
16+
Component component = iterator.next();
17+
if (component instanceof Folder)
18+
System.out.print("folder:");
19+
else
20+
System.out.print("file:");
21+
component.display();
22+
}
23+
}
2224
}
Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
1-
package com.anxpp.designpattern.Observer;
2-
//观察者
3-
public interface Client {
4-
void getWeather(WeatherInfo info);
5-
}
1+
package com.anxpp.designpattern.Observer;
2+
3+
//观察者
4+
public interface Client {
5+
void getWeather(WeatherInfo info);
6+
}
Lines changed: 16 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,16 @@
1-
package com.anxpp.designpattern.Observer;
2-
3-
public class ClientAndroidServer implements Client {
4-
private static String name = "安卓服务";
5-
private WeatherInfo info;
6-
@Override
7-
public void getWeather(WeatherInfo info) {
8-
this.info = info;
9-
dealMsg();
10-
}
11-
private void dealMsg(){
12-
System.out.println(name + "收到最新天气:time="+info.getTime()+"msg="+info.getWeather()+"。马上开始推送消息...");
13-
}
14-
}
1+
package com.anxpp.designpattern.Observer;
2+
3+
public class ClientAndroidServer implements Client {
4+
private static String name = "安卓服务";
5+
private WeatherInfo info;
6+
7+
@Override
8+
public void getWeather(WeatherInfo info) {
9+
this.info = info;
10+
dealMsg();
11+
}
12+
13+
private void dealMsg() {
14+
System.out.println(name + "收到最新天气:time=" + info.getTime() + "msg=" + info.getWeather() + "。马上开始推送消息...");
15+
}
16+
}

0 commit comments

Comments
 (0)