[디자인패턴] 컴포지트 패턴
책을 공부하며 새로운 문제를 만들고 구현한것을 기록한 게시글입니다. (이해한 내용을 바탕으로 작성했기 때문에, 내용이 정확하지않고 틀린부분이 있을수있으며, 예시가 패턴을 사용하기에 알맞지 않을수도있습니다) 컴포지트 패턴 - 클라이언트에서 객체컬렉션과 객체를 똑같이 처리한다. 쉽게말해, 객체를 담고있는 객체컬렉션과 객체컬렉션에 담겨있는 객체에대해서 똑같은 처리방법으로 접근할수있다는것이다. 트리 자료구조를 생각하면 이해가 쉬운데, 노드 D의 자식노드 E,F,G가 있다고하자. 이때, E, F, G는 D에 담겨있는 객체이고, D는 E,F,G를 담고있는 객체 컬렉션이다. 하지만, D는 항상 객체컬렉션이 아닐수도있다. D또한 어떠한 노드(A,B,C)의 자식중 하나일수있기때문이다. 즉, 각 노드를 객체이자 객체컬렉션..
[디자인 패턴] 싱글턴 패턴 문제 - 파스타 (데코레이터, 옵저버, 팩토리)
책을 공부하며 새로운 문제를 만들고 구현한것을 기록한 게시글입니다. (이해한 내용을 바탕으로 작성했기 때문에, 내용이 정확하지않고 틀린부분이 있을수있으며, 예시가 패턴을 사용하기에 알맞지 않을수도있습니다) 싱글턴 패턴 클래스 인스턴스가 하나만 만들어지도록하며, 해당 인스턴스를 전역적으로 접근하도록함. 다중스레드를 이용할때, 싱글턴 패턴을 사용하면, 오류가 발생할수있다. (스레드가 동시에 클래스를 호출해, 인스턴스가 한개 초과로 생성된다거나..) 이를 방지하기위해, syncronized와 volatile을 사용한다. syncronized syncronized는 스레드간에 동기화를 시켜준다. A스레드와 B스레드가있다고하자. A스레드가 a메소드를 사용중일때, syncronized는 a메소드에 lock을건다. ..