본문 바로가기

Computer Science/Design Pattern

(4)
[디자인 패턴] 옵저버(Observer) 패턴 정의 옵저버 패턴은 주체가 어떤 객체의 상태 변화를 관찰하다가 상태 변화가 있을 때 마다 메서드 등을 통해 옵저버 목록에 있는 옵저버에게 변화를 알려주는 패턴이다. 객체와 주체가 분리되어 있을 수도 있고, 객체와 주체가 합쳐진 옵저버 패턴이 있을 수도 있다. 여기서 주체란, 객체의 상태 변화를 보고있는 관찰자이며, 옵저버들이란 이 객체의 상태 변화에 전달되는 메서드등을 기반으로 추가적인 변화 사항들이 생기는 객체들을 의미한다. 옵저버 패턴은 주로 이벤트 기반 시스템에 사용하며, MVC 패턴에도 많이 사용된다. 예를 들어, 모델에서 변경사항이 생겨 update() 메서드로 옵저버인 뷰에 알려주고 이를 기반으로 컨트롤러 등이 작동하는 방식이다. 옵저버 패턴의 장점 주체와 관찰자들 사이의 결합도를 낮출 수 있..
[디자인 패턴] 전략(Strategy) 패턴 정의 전략 패턴은, 정책 패턴이라고도 하며 객체의 행위를 바꾸고 싶은 경우 직접 수정하지 않고 전략이라고 부르는 캡슐화된 알고리즘을 컨텍스트 안에서 바꿔주면서 상호 교체가 가능하게 만드는 패턴이다. 전략 패턴은 여러 알고리즘이나 행동 중에서 선택해야 할 때 유용하다. 클라이언트 객체는 일련의 전략 객체 중 하나를 선택하고, 선택된 전략 객체는 클라이언트에서 필요한 일을 수행한다. 예를 들어서, 동일한 작업을 수행하고 있는 여러 알고리즘이 있는 경우, 전략 패턴을 사용하여 이러한 알고리즘을 캡슐화하고 클라이언트 코드와 분리할 수 있다. 이렇게 하면 새로운 알고리즘을 추가하거나 기존 알고리즘을 변경할 때 클라이언트 코드를 변경할 필요가 없다. 전략 패턴 예시 자바코드 전략 패턴을 예시로 설명하기 위해, 간단..
[디자인 패턴] Factory 패턴 정의 팩토리 패턴 은, 생성 패턴 중 하나로 객체를 사용하는 코드에서 객체 생성 부분을 떼어내 추상화한 패턴이자, 상속 관계에 있는 두 클래스에서 상위 클래스가 중요한 뼈대를 결정하고, 하위 클래스에서 객체 생성에 관한 구체적인 내용을 결정하는 패턴이다. 즉, 객체를 생성하는 인터페이스를 미리 정의하지만, 인스턴스를 만들 클래스의 결정은 서브 클래스 쪽에서 결정하는 패턴이다. 여러개의 서브 클래스를 가진 슈퍼 클래스가 있을때, 들어오는 인자에 따라서 하나의 자식클래스의 인스턴스를 반환해주는 방식이다. 팩토리 패턴은 클래스의 인스턴스를 만드는 시점 자체를 서브 클래스로 미루는 것이다. 팩토리 패턴을 요악해서 말하면, 객체 생성을 대신 수행해주는 공장이라고 표현할 수 있다. 팩토리 패턴 장점 - 상위 클래스..
[디자인 패턴] Singleton 패턴 정의 - 싱글톤 패턴은, 하나의 클래스에 오직 하나의 인스턴스만 가지는 패턴이다. 보통 데이터베이스 모듈에 많이 사용한다. - 하나의 인스턴스를 만들어 놓고, 해당 인스턴스를 다른 모듈들이 공유하며 사용하기 때문에, 인스턴스를 생성할 때 드는 비용이 줄어드는 장점이 있다. 자바에서의 싱글톤 패턴 자바로는 다음과 같이 중첩 클래스를 이용해서 만드는 것이 가장 대중적인 방법이다. class Singleton { private static class singleInstanceHolder { private static final Singleton INSTANCE = new Singleton(); } public static Singleton getInstance() { return singleInstanceHo..