Skip to content

Commit 99b4d47

Browse files
committed
init
0 parents  commit 99b4d47

42 files changed

Lines changed: 632 additions & 0 deletions

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: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<classpath>
3+
<classpathentry kind="src" path="src"/>
4+
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
5+
<classpathentry kind="output" path="bin"/>
6+
</classpath>

.project

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<projectDescription>
3+
<name>JavaDesignPattern</name>
4+
<comment></comment>
5+
<projects>
6+
</projects>
7+
<buildSpec>
8+
<buildCommand>
9+
<name>org.eclipse.jdt.core.javabuilder</name>
10+
<arguments>
11+
</arguments>
12+
</buildCommand>
13+
</buildSpec>
14+
<natures>
15+
<nature>org.eclipse.jdt.core.javanature</nature>
16+
</natures>
17+
</projectDescription>
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
eclipse.preferences.version=1
2+
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
3+
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
4+
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
5+
org.eclipse.jdt.core.compiler.compliance=1.8
6+
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
7+
org.eclipse.jdt.core.compiler.debug.localVariable=generate
8+
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
9+
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
10+
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
11+
org.eclipse.jdt.core.compiler.source=1.8
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
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();
15+
}
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
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+
}
Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
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+
}
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
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+
}
22+
}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
/**
2+
* @author Administrator
3+
* 组合模式
4+
*/
5+
package com.anxpp.designpattern.Composite;
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
package com.anxpp.designpattern.Observer;
2+
//观察者
3+
public interface Client {
4+
void getWeather(WeatherInfo info);
5+
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
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+
}

0 commit comments

Comments
 (0)