목록프로그래밍/디자인 패턴 (3)
강께르의 개발일지
옵저버 패턴 - 하나의 서브젝트와 다수의 옵저버들 사이의 상호작용을 결합도를 낮게 / 응집도를 높게 만드려는 패턴이다. - 서브젝트의 일이 일어난다면, 다수의 옵저버들에게 그 일이 발생했다는 것을 알려주고, 옵저버들은 일이 발생했을 때, 처리하고 픈 특정 일을 수행하게 한다. - 서브젝트 클래스 혹은 인터페이스에는 세가지 기능을 갖고 있다. - 옵저버 추가, 옵저버 제거, 옵저버에게 공지 - 추가와 제거하기 위한 데이터 컨테이너를 지니고 있으며, 그 컨테이너를 순회하며 특정 메소드를 호출하는 방식이다. - 특정 메소드란 옵저버 클래스 혹은 인터페이스가 지니고 있을 메소드를 의미한다. - 옵저버들은 해당 클래스를 상속받은 클래스를 의미한다. 그 클래스를 상속받은 클래스 인스턴스들은 서브젝트 클래스를 상속받..
싱글톤 패턴 전역의 장점을 이용하지만 전역 변수를 사용하지 않고 클래스의 인스턴스를 딱 하나만 생성하여, 그 인스턴스를 어디에서든지 참조할 수 있도록 하는 패턴 특징 최초 단 한 번의 생성을 통해 고정된 메모리 영역만 사용하고 그 이후 인스턴스에 대한 요청은 생성한 인스턴스를 돌려주는 방식으로 동작하기에 메모리 낭비를 방지할 수 있다. 전역처럼 어디에서든지 참조할수 있다는 점에서 데이터 공유가 쉽다는 장점이 있다. 다만 여러 클래스의 인스턴스가 싱글톤 인스턴스를 동시에 접근한다면 문제가 있기에 설계 시 유의. 너무 많은 일이 주어지거나 공유하게 되면 높은 결합도를 갖게 돼서 좋지 못한 구조를 지니게 된다. 사용하는 방법 클래스의 생성자는 private으로 막아둘 것. 인스턴스가 수정되는 것을 막아둘 것...
1. 디자인 패턴이란? - 소프트웨어를 설계할 때, 공통적으로 개발자라면 만나게 되는 문제에 대한 공통적인 해법이나 자주 쓰이는 설계 방법을 이르는 말이다. - 이를 패턴화하여 재사용하기 좋게 해놓았으며, 효율적인 코드를 만들기 위한 방법론을 제시하기 때문에 개발의 효율성을 좋게 하는 효과가 있다. - 하지만 이를 패턴을 맹신하여 남용하는 부분은 지양해야 한다. 굳이 이러한 적용점이 필요 없는 부분이라면 적용하지 않을 것이 좋다고 한다. - 상황에 따라 자주 쓰이는 설계 방법을 정리한 방법론이기에 모든 상황의 해결책은 아니다. 무작정 가져다 쓰기보다 왜 효율적인 방식이고 패턴들로부터 노하우를 습득하는 것이 중요하다고 한다. - 그리고 상대방과의 의사소통에 도움을 줄 것이다. 예를 들어 문제 해결 제안을 ..