디자인패턴) Composite pattern 간단 정리 및 설명 with Java
Composite pattern 컴포지트 패턴
- 부분 - 전체 관계를 가지는 객체들을 표현할 때 사용되는 구조(Structural)패턴 입니다.
- 사용자는 전체와 부분을 구분없이 동일한 인터페이스를 사용하도록 합니다.
- 부분(Leaf)과 전체(Composite)를 포함하는 일반화 클래스(Component)를 정의
- 전체(Composite)는 여러 개의 Component를 참조함으로써 Composition의 관계를 가집니다.
public abstract class ComputerDevice {protected int price = 0;protected int power = 0;public abstract int getPrice();public abstract int getPower();}
public class Body extends ComputerDevice {public Body(int price, int power){this.price = price;this.power = power;}@Overridepublic int getPrice() {return this.price;}@Overridepublic int getPower() {return this.power;}}
- 다른 부품들도 같은 형식으로 정의 합니다.
public class Computer extends ComputerDevice {
private List<ComputerDevice> components;
public Computer(){
this.components = new ArrayList<>();
}
public void addComponent(ComputerDevice com){
this.components.add(com);
}
public Boolean removeComponent(ComputerDevice com){
return this.components.remove(com);
}
@Override
public int getPrice() {
for(ComputerDevice com : components){
this.price += com.getPrice();
}
return this.price;
}
@Override
public int getPower() {
for(ComputerDevice com : components){
this.power += com.getPower();
}
return this.power;
}
}
- 부품들(부분)을 포함하는 컴퓨터(전체)객체를 정의 합니다.
public class main {
public static void main(String[] args) throws IOException{
Body body = new Body(80, 100);
Monitor monitor = new Monitor(20, 100);
Keyboard keyboard = new Keyboard(10, 5);
Mouse mouse = new Mouse(5, 5);
Computer computer = new Computer();
computer.addComponent(body);
computer.addComponent(monitor);
computer.addComponent(keyboard);
computer.addComponent(mouse);
System.out.println(computer.getPrice());
System.out.println(computer.getPower());
}}
댓글
댓글 쓰기