목록전체 글 (136)
복습

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

인덱스는 여러 자료구조를 이용해서 구현할 수 있는데, 대표적으로 해시 테이블(Hash Table)과 B+Tree가 있다. 해시 테이블(Hash Table) key와 value를 한 쌍으로 데이터를 저장하는 자료구조 key 값으로 value를 찾기 때문에 평균적으로 O(1)의 매우 빠른 시간으로 데이터를 탐색 But, 해시 테이블은 인덱스에서 잘 사용되지 않는다. Why? 해시 테이블은 등호(=) 연산에 최적화 데이터베이스에서는 부등호() 연산이 자주 사용되는데, 해시 테이블의 데이터는 정렬되어 있지 않으므로 기준값보다 작거나 큰 값을 빠른 시간 내에 찾을 수 없다. B-Tree Balanced Tree의 일종으로 Binary Tree(이진 트리)를 확장하여 하나의 노드가 가질 수 있는 자식 노드의 최대 ..

인덱스(Index)란? 추가적인 쓰기 작업과 저장 공간을 활용하여 데이터베이스 테이블의 검색 속도를 향상시키기 위한 자료구조 책의 맨 앞 또는 맨 뒤에 있는 색인과 같다. 테이블의 모든 데이터를 검색하면 시간이 오래 걸려 데이터와 데이터의 위치를 포함한 자료구조를 생성하여 빠르게 조회할 수 있도록 한다. 인덱스 생성 시 해당 컬럼의 데이터를 정렬하여 별도의 메모리 공간에 데이터의 물리적 주소와 함께 저장 인덱스 생성 시 데이터를 오름차순으로 정렬하기 때문에 정렬된 주소체계라고 표현할 수 있다. select, update, delete의 성능이 향상된다.(모두 대상을 조회해야 하기 때문) 인덱스의 장점과 단점 장점 데이터가 정렬되어 있어 조건 검색이라는 영역에서 굉장한 장점 테이블을 조회하는 속도와 그에 ..

커맨드 패턴(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(주제 객체),..