[ 플라이 웨이트 ]
WHY?
똑같은 상태, 똑같은 행동을 하지만 많은 객체?
과연 똑같은 상태, 똑같은 행동을 하는 것을 우리는 객체로 관리를 한다. 여기서 만약 우리가 가지고 있는 메모리가 작다면?
WHAT?
우리는 모든 것을 관리하는게 아니라 상태만 관리하자, 그리고 필요할 때만 가져와서 사용하자
HOW?
여러 나무를 관리하는 관리자 일때
public class TreeManager {
private int[][] treeStatus;
public TreeManager(int y, int x) {
treeStatus = new int[y][x];
}
public void init() {
treeStatus[0][0] = 5;
treeStatus[1][1] = 50;
treeStatus[0][2] = 20;
}
public void manage(int y, int x) {
if (outOfRange(y, x)) {
throw new RuntimeException("관리하지 않는 공간");
}
if (treeStatus[y][x] == 0) {
throw new RuntimeException("설치하지 않는 공간 입니다.");
}
Tree tree = new Tree(y,x, treeStatus[y][x]);
dislpay(tree);
}
private void dislpay(Tree tree) {
tree.display();
}
private boolean outOfRange(int y, int x) {
return y < 0 || y >= treeStatus.length || x < 0 || x >= treeStatus[0].length;
}
}
public class Tree {
private int y;
private int x;
private int age;
public Tree(int y, int x, int age) {
this.y = y;
this.x = x;
this.age = age;
}
public void display() {
System.out.println(String.format("%y %x %d",y,x,age));
}
}
간단 하게 위와 같이 상태를 설정하는 테이블을 통해 필요할 때 마다 값을 가져와서 사용
그 외의 경우 github 링크 참고
[ 중재자 ]
WHY?
완벽한 객체지향을 꿈꾸다. 발생한 문제
객체지향적으로 작성하다 보니, 객체를 타고타고 끝이 없다. 즉 코드를 찾아 가기가 힘들다.
WHAT?
따라서 어떻게 해결해야 할까? 하나로 모으자
HOW?
-> 다시 절차지향으로!!
그래서 사용하는 예시가 GUI와 예외처리라고 할 수 있는데, 객체지향 적으로 작성하다 보면 예외 처리도 타고타고 갈 수 있는데 이렇게 되다 보면 코드가 복잡해지기 때문에 이걸 하나의 메서드에서 절차적으로 작성한다는 것이다.
GUI또한 GUI를 구성하기 위해 여러 컴포넌트들이 모여 있는데 이러한 컴포넌트들의 상호작용 시 특정 기능을 함수를 타는 것이 아닌 하나의 메서드로
결국 좁고 깊게 보다 넓고 얕게이다.
'디자인패턴' 카테고리의 다른 글
[디자인 패턴] - 컴포지트 패턴 (0) | 2023.06.30 |
---|---|
[디자인 패턴] - 반복자 패턴 (2) | 2023.06.30 |
[디자인 패턴] 템플릿 메소드 패턴 (0) | 2023.06.28 |
[디자인 패턴] - 전략 패턴 (0) | 2023.06.16 |