목록CS/Design Pattern (4)
복습

프로토타입 패턴이란? 객체를 생성하는 데 비용이 많이 들고, 비슷한 객체가 이미 있는 경우에 사용되는 생성 패턴 Original 객체를 새로운 객체에 복사하여 필요에 따라 수정하는 메커니즘 제공 Java의 경우 clone()을 사용하여 객체를 복사 객체를 복사할 때의 문제 객체 복사본 생성 같은 클래스의 객체 생성 원본 객체의 필드를 모두 탐색하여 복사 문제점 객체의 필드가 일부 비공개일 수 있음 객체의 복사본을 생성하려면 해당 객체의 클래스를 알아야 하므로 해당 클래스에 의존하게 됨 인터페이스를 사용할 때 구현 클래스는 알 수 없음 프로토타입 패턴을 통한 해결 복제되는 객체들에 복제 프로세스를 위임 복제를 지원하는 모든 객체에 대한 공통 인터페이스 선언 clone 메서드를 통해 현재 클래스의 객체를 만..

커맨드 패턴(Command Pattern) 하나의 객체를 통해 여러 객체들에 명령(Command)을 해야할 때 사용되는 패턴 요청을 캡슐화 하여 커맨드 객체가 명령을 해야하는 객체들에 대한 의존성을 느슨하게 한다. 커맨드 패턴의 구조 Command 실행될 기능에 대한 인터페이스 실행될 기능을 execute 메서드로 선언함 ConcreteCommand 실제로 실행되는 기능을 구현 즉, Command라는 인터페이스를 구현함 Invoker 기능의 실행을 요청하는 호출자 클래스 Receiver ConcreteCommand에서 execute 메서드를 구현할 때 필요한 클래스 즉, ConcreteCommand의 기능을 실행하기 위해 사용하는 수신자 클래스 예시 만능 버튼 Button 클래스의 생성자로 Lamp 객체..
노출 모듈 패턴이란(Revealing Module Pattern) 자바스크립트 디자인 패턴으로 명시적으로 노출될 메소드를 지정하는 디자인 즉시 실행 함수를 통해 private, public 같은 제어자를 만드는 패턴 자바스크립트에선 접근제한자가 없어, 클로저와 컨텍스트의 개념을 이용하여 접근 제한자를 구현한다. 자바스크립트는 private이나 public 같은 접근 제어자가 존재하지 않고 전역 범위에서 스크립트가 실행된다. 노출 모듈 패턴 구현 /* 1. 일반적인 형태 */ var obj = ({function() /* private 구현 */ return { /* public 구현 */} })(); /* 2. 예시 */ var remoteController = (function() { var power..

옵저버 패턴이란? 객체의 상태 변화를 관찰하는 옵저버(관찰자)들의 목록을 객체에 등록하여 상태 변화가 있을 때마다 notify를 통해 객체가 직접 목록의 각 옵저버에게 통지하도록 하는 디자인 패턴 유튜브로 예를 들면 해당 채널을 구독하고 있는 구독자들에게는 영상이 업로드 되면 알림이 가지만, 구독하고 있지 않은 사람에게는 알림이 가지않는다. 따라서 구독하지 않은 사람은 영상이 업로드 되었는지 계속 확인해야 한다.(폴링) 폴링이란? 하나의 장치 또는 프로그램이 다른 장치 또는 프로그램의 상태를 주기적으로 검사하여 작업을 처리하는 방식 옵저버 패턴 클래스 다이어그램 관찰 대상인 Subject 인터페이스, 관찰을 하는 Observer 인터페이스 각 인터페이스를 구현한 ConcreteSubject(주제 객체),..