Composite Pattern
This commit is contained in:
18
design-pattern/src/Composite/Component.java
Normal file
18
design-pattern/src/Composite/Component.java
Normal file
@@ -0,0 +1,18 @@
|
||||
package Composite;
|
||||
|
||||
abstract public class Component {
|
||||
|
||||
private String name;
|
||||
|
||||
public Component(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
}
|
||||
3
design-pattern/src/Composite/Composite
Normal file
3
design-pattern/src/Composite/Composite
Normal file
@@ -0,0 +1,3 @@
|
||||
Composite Pattern
|
||||
- 컨테이너와 내용물을 같게 다루기
|
||||
- Composite 패턴을 통해서 트리구조 구현
|
||||
18
design-pattern/src/Composite/File.java
Normal file
18
design-pattern/src/Composite/File.java
Normal file
@@ -0,0 +1,18 @@
|
||||
package Composite;
|
||||
|
||||
public class File extends Component{
|
||||
|
||||
private Object data;
|
||||
|
||||
public File(String name) {
|
||||
super(name);
|
||||
}
|
||||
|
||||
public Object getData() {
|
||||
return data;
|
||||
}
|
||||
|
||||
public void setData(Object data) {
|
||||
this.data = data;
|
||||
}
|
||||
}
|
||||
25
design-pattern/src/Composite/Folder.java
Normal file
25
design-pattern/src/Composite/Folder.java
Normal file
@@ -0,0 +1,25 @@
|
||||
package Composite;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class Folder extends Component {
|
||||
|
||||
List<Component> children = new ArrayList<>();
|
||||
|
||||
public Folder(String name) {
|
||||
super(name);
|
||||
}
|
||||
|
||||
public boolean addComponent(Component component) {
|
||||
return children.add(component);
|
||||
}
|
||||
|
||||
public boolean removeComponent(Component component){
|
||||
return children.remove(component);
|
||||
}
|
||||
|
||||
public List<Component> getChildren() {
|
||||
return children;
|
||||
}
|
||||
}
|
||||
41
design-pattern/src/Composite/Main.java
Normal file
41
design-pattern/src/Composite/Main.java
Normal file
@@ -0,0 +1,41 @@
|
||||
package Composite;
|
||||
|
||||
public class Main {
|
||||
public static void main(String[] args) {
|
||||
Folder root = new Folder("root"),
|
||||
home = new Folder("home"),
|
||||
garam = new Folder("garam"),
|
||||
music = new Folder("music"),
|
||||
picture = new Folder("picture"),
|
||||
doc = new Folder("doc"),
|
||||
usr = new Folder("usr");
|
||||
File track1 = new File("track1"),
|
||||
track2 = new File("track2"),
|
||||
pic1 = new File("pic1"),
|
||||
doc1 = new File("doc1"),
|
||||
java = new File("java");
|
||||
|
||||
root.addComponent(home);
|
||||
home.addComponent(garam);
|
||||
garam.addComponent(music);
|
||||
music.addComponent(track1);
|
||||
music.addComponent(track2);
|
||||
garam.addComponent(picture);
|
||||
picture.addComponent(pic1);
|
||||
garam.addComponent(doc);
|
||||
doc.addComponent(doc1);
|
||||
root.addComponent(usr);
|
||||
usr.addComponent(java);
|
||||
|
||||
show(root);
|
||||
}
|
||||
|
||||
private static void show(Component component) {
|
||||
System.out.println(component.getClass().getName() + "|" + component.getName());
|
||||
if(component instanceof Folder) {
|
||||
for (Component c : ((Folder) component).getChildren()) {
|
||||
show(c);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user