[자바 디자인패턴 소스코드] Composite Pattern
- Java/Java
- 2022. 6. 20. 23:00
컴포지트 패턴
/**
* 컴포지트 패턴은 전체-부분의 관계를 갖는 객체들 사이의 관계를 정의할 때 유용하다.
* 그리고 클라이언트는 전체와 부분을 구분하지 않고 동일한 인터페이스를 사용할 수 있다.
*/
public class CompositePattern {
public static void main(String[] args) {
File file01 = new File("기밀문서.txt", 100);
File file02 = new File("임시파일.txt", 30);
File file03 = new File("새파일.txt", 0);
File file04 = new File("test.txt", 70);
Folder folder01 = new Folder("직박구리");
Folder folder02 = new Folder("새폴더");
folder01.addComponent(file01);
folder01.addComponent(file02);
folder01.addComponent(folder02);
folder02.addComponent(file03);
folder02.addComponent(file04);
System.out.println("name : " + folder01.getName());
System.out.println("total size : " + folder01.getSize());
}
}
abstract class Component {
public abstract String getName();
public abstract int getSize();
}
class File extends Component {
private String name;
private int size;
public File(String name, int size) {
this.name = name;
this.size = size;
}
public String getName() {
return this.name;
}
public int getSize() {
return this.size;
}
}
class Folder extends Component {
private String name;
private List<Component> components = new ArrayList<Component>();
public Folder(String name) {
this.name = name;
}
public void addComponent(Component component) {
this.components.add(component);
}
public void removeComponent(Component component) {
components.remove(component);
}
@Override
public String getName() {
return this.name;
}
@Override
public int getSize() {
int size = 0;
for(Component item : components) {
size += item.getSize();
}
return size;
}
}
'Java > Java' 카테고리의 다른 글
Scanner & BufferedReader (0) | 2022.08.16 |
---|---|
SOLID 원칙 (0) | 2022.06.23 |
[자바 디자인패턴 소스코드] Abstract Factory Pattern (0) | 2022.06.16 |
[자바 디자인패턴 소스코드] Factory Pattern (0) | 2022.06.15 |
[자바 디자인패턴 소스코드] Template Pattern (0) | 2022.06.08 |
이 글을 공유하기