본문 바로가기

디자인패턴

옵저버 패턴(Observer Pattern) 느슨한 결합(Loose Coupling)은 객체들이 상호작용할 수는 있지만, 서로를 잘 모르는 관계를 의미한다. 옵저버 패턴은 한 객체의 상태가 바뀌면 그 객체에 의존하는 다른 객체에게 연락이 가고 자동으로 내용이 갱신되는 방식으로 일대다 의존성을 정의한다. 예시로는 특정 날에 용돈을 받는 로직을 만들어 보자. 옵저버 패턴을 사용하지 않는다면 용돈을 받는 클래스가 계속 오늘이 용돈 받는 날인지 체크 해야 한다. Subject 인터페이스는 옵저버를 관리하는 클래스를 추상화 한 것이다. 옵저버를 관리하는 클래스는 굳이 인터페이스로 설계를 안 해도 문제가 없지만 확장성을 위해 인터페이스 만들고 구현하게 했다. 주제 인터페이스를 구현하는 클래스에 정보가 변경 될 때마다 정보를 받을 수 있게 옵저버 인터페이스를 .. 더보기
전략 패턴(strategy Pattern) 전략패턴은 알고리즘군을 정의하고 캡슐화해서 각각의 알고리즘군을 수정해서 쓸 수 있게 해준다. 전략 패턴을 사용하면 클라이언트로부터 알고리즘을 분리해서 독립적으로 변결할 수 있다. 영어 공부, 수학 공부를 하는 클래스가 있다. 평소에 Client에서는 영어 공부만 했다. 그런데 수학 공부로 변경하고 싶다. 전략 패턴을 쓰기 전에 코드는 밑에 와 같다. 이렇게 변경이 생길 때 코드 전체를 다 변경해야 한다. 이렇게 변경할 때마다 코드 전체를 변경해야 한다면 프로젝트가 커지면 커질수록 더 힘들 것이다. 이번에는 전략패턴을 사용해보자. 영어 클래스와 수학 클래스에 공통 메서드인 doing을 study라는 인터페이스로 추상화를 한다. 그리고 study 인터페이스를 기존에 클래스가 구현하도록 설계를 한다. 처음 인.. 더보기