목록전산학/디자인패턴 (5)
배고픈 개발자 이야기
소프트웨어 디자인 패턴에서 싱글톤 패턴을 따르는 클래스는, 생성자가 여러 차례 호출되더라도 실제로 생성되는 객체는 하나이고 최초 생성 이우에 호출된 생성자는 최초의 생성자가 생성한 객체를 리턴한다. 이와 같은 디자인 유형을 싱글톤 패턴이라고 한다. 주로 공통된 객체를 여러개 생성해서 사용하는 DBCP(DataBase Connection Pool)와 같은 상황에서 많이 사용된다. 파이썬의 모듈은 그 자체로 싱글톤이다. 자바는 생성자를 private으로 선언하여 상속이 불가능함을 지정하기도 한다.
팩토리 메서드 패턴은 객체지향 디자인 패턴이다. Factory method는 부모(상위)클래스에 알려지지 않은 구체 클래스를 생성하는 패턴이며, 자식(하위) 클래스가 어떤 객체를 생성할지를 결정하도록 하는 패턴이기도 하다. 부모(상위) 클래스 코드에 구체 클래스 이름을 감추기 위한 방법으로도 사용한다. Factory Method라는 패턴 이름이 적절하지 못한데, 이름으로 인해 객체를 생성하는 메소드를 Factory method라 오해하는 개발자가 많이 있다. 이런 생성 메소드가 모두 Factory method 패턴을 사용하는 것은 아니다. Template Method의 생성 패턴 버전으로 볼 수 있는데 Template method를 알지 못한다면 그 패턴을 먼저 이해하는 것이 Factory Method를..
커맨드 패턴이란 요청을 객체의 형태로 캡슐화 하여 사용자가 보낸 요청을 나중에 이용할 수 있도록 매서드 이름, 매개변수 등 요청에 필요한 정보를 저장 또는 로깅, 취소할 수 있게 하는 패턴이다. 커맨드 패턴에는 명령(command), 수신자(receiver), 발동자(invoker), 클라이언트(client)의 네개의 용어가 항상 따른다. 커맨드 객체는 수신자 객체를 가지고 있으며, 수신자의 메서드를 호출하고, 이에 수신자는 자신에게 정의된 메서드를 수행한다. 커맨드 객체는 별도로 발동자 객체에 전달되어 명령을 발동하게 한다. 발동자 객체는 필요에 따라 명령 발동에 대한 기록을 남길 수 있다. 한 발동자 객체에 다수의 커맨드 객체가 전달될 수 있다. 클라이언트 객체는 발동자 객체와 하나 이상의 커맨드 객..
옵저버(특정 목록의 변화 관찰)로 객체에 등록하여 객체가 직접 통지하도록 하는 패턴 주로 분산 이벤트 핸들링 시스템을 구현하는 데 사용된다. + 발행/구독 모델 1) 기본구성 어떤 상태를 관리하는 Subject 객체(상태머신,생산자,Observable)가 있고 , 이 객체에서 일어나는 상태 변화에 따라서 해당 이벤트를 받길 원하는 옵저버(관찰자,소비자)들은 매니져 객체에 자신을 등록 한다 그 후에, Subject 객체에서 어떤 상태가 변경 되었을 때 , 자신에게 등록된 옵저버들에게 이벤트를 notify 해주는게 옵저버 패턴의 주요 골자이며, Subject 객체는 관찰자들에 대해서 유연하게 커플링 되어 있게 된다. 즉 매니저 객체가 소비자들에 대해서 정확한 정보를 알 필요가 없이, 소비자들이 알아서 Sub..
캡슐화를 통해 코드의 중복이 없이 재사용 가능하게 하는 패턴 스트래티지를 활용하여 알고리즘을 사용하는 클라이언트와 독립적으로 알고리즘 변경할 수 있다. ex1) 추상 동물 클래스와 일반적인 방법으로 상속받는 Eagle / Tiger 객체 - 속성 : cry / display ex1)에서 추가 속성으로 fly 메소드를 추가하면 추상 클래스를 상속 받는 객체들은 모두 속성을 호출할 수 있다. 하지마 fly는 모든 Animal의 공톡 속성이 아니므로 문제가 있고 - 이를 구분해 주어야 한다. ex2) 추가 속성의 공통 속성 문제를 해결하기 위해 fly 메소드를 인터페이스로 추가 fly를 객체마다 따로 구분해주기 위해 인터페이스로 구현하였지만 fly 인터페이스를 객체에 따라 구분해 주어야 할 필요성이 생기게 되..