CS 공부5 옵저버 패턴 Observer Pattern 옵저버(관찰자)들이 관찰하고 있는 대상자의 상태가 변화가 있을 때마다 대상자는 직접 목록의 각 관찰자들에게 통지하고, 관찰자들은 알림을 받아 조치를 취하는 행동 패턴이고, 1:N 의 의존성을 가지고 있다. 옵저버 패턴 흐름 옵저버 패턴에서는 한개의 관찰 대상자(Subject)와 여러개의 관찰자(Observer A, B, C)로 일 대 다 관계로 구성되어 있다. Observer 패턴에서는 관찰 대상 Subject의 상태가 바뀌면 변경사항을 옵저버 한태 통보해준다. (notifyObserver) 대상자로부터 통보를 받은 Observer는 값을 바꿀수도 있고, 삭제하는 등 적절히 대응한다. (update) 또한 Observer들은 언제든 Subject의 그룹에서 추가/삭제 될 수.. 2024. 2. 13. 프록시 패턴과 프록시 서버 프록시 패턴 대상객체에 접근하기 전 그 접근에 대한 흐름을 가로채 대상 객체 앞단의 인터페이스 역할을 하는 디자인 패턴이다 객체의 속성, 변환 등을 보안, 데이터 검증, 캐싱, 로깅에 사용한다 객체로도 사용하지만 프록시 서버로도 활용 한다. 프록시 서버는 서버와 클라이언트 사이에 클라이언트가 자신을 통해 다른 네트워크 서비스에 간접적으로 접속 할 수 있게 해주는 컴퓨터 시스템이나 응용프로그램을 말한다 프록시 패턴 종류 1. 기본형 2. 가상 지연 초기화 방식 가끔 필요하지만 항상 메모리에 적재되어 있는 무거운 서비스 객체가 있는 경우 이 구현은 실제 객체의 생성에 많은 자원이 소모 되지만 사용 빈도는 낮을 때 쓰는 방식이다. 서비스가 시작될 때 객체를 생성하는 대신에 객체 초기화가 실제로 필요한 시점에 .. 2024. 2. 13. 전략패턴 (Strategy Pattern) 전략패턴이란 전략패턴은 정책패턴(Policy Pattern)이라고도 한다. 객체의 행위를 바꾸고 싶은 경우 직접 수정 하지 않고, 캡슐화한 알고리즘을 컨텍스트 안에서 바꿔주면서 상호 교체가 가능 하게 만드는 패턴이다 알고리즘들의 패밀리를 정의하고, 각 패밀리를 별도의 클래스에 넣은 후 그들의 객체들을 상호교환할 수 있도록 하는 행동 디자인 패턴이다. 전략패턴 예제 물건을 구매 할 때, 네이버페이, 카카오페이, 카드 결재 등 다양한 방법으로 결재 하는 방법을 구현한 예제이다. 즉, 결재 방식만 바꾸는 전략을 사용한것이다. import java.text.DecimalFormat; import java.util.ArrayList; import java.util.List; interface PaymentStra.. 2024. 2. 8. 팩토리 패턴(factory pattern) 팩토리 패턴 객체를 사용하는 코드에서 객체 생성 부분을 떼어내 추상화한 패턴이자 상속 관계에 있는 두 클래스에서 상위 클래스가 중요한 뼈대를 결정하고, 하위 클래스에서 객체 생성에 관한 구체적인 내용을 결정하는 패턴 즉, 객체 생성 처리를 서브 클래스로 분리 해 처리하도록 캡슐화하는 패턴으로 객체의 생성 코드를 별도의 클래스/메서드로 분리함으로써 객체 생성의 변화에 대비하는 데 유용하다. 주로 인터페이스 타입으로 오브젝트를 반환하므로 Super Class에서는 Sub Class에서 정확히 어떤 클래스의 오브젝트를 만들어 반환할지 알지 못한다. 예시 라떼 레시피와 아메리카노 레시피, 우유 레시피 라는 구체적인 내용이 들어있는 하위 클래스가 컨베이어 벨트를 통해 전달 되고, 상위 클래스인 바리스타 공장에서 .. 2024. 2. 8. [DB] 조인의 종류 및 원리 조인(join) 하나의 테이브링 아닌 두 개 이상의 테이블을 묶어서 하나의 결과물을 만드는 과정 조인의 종류로는 내부조인, 왼쪽조인, 오른쪽 조인, 합집합조인이 있다. 내부조인 (Inner join) 두 테이블 간에 교집합을 나타낸다. SELECT * FROM TableA A INNER JOIN TableB B ON A.key = B.key 왼쪽조인 (Left Outer Join) 테이블 b와 일치하는 부분과 테이블 a 를 기준으로 완전한 레코드 집합을 생성 SELECT * FROM TableA A LEFT JOIN TableB B ON A.key = B.key 오른쪽조인 (Right Outer join) 테이블 a와 일치하는 부분과 테이블 b를 기준으로 완전한 레코드 집합을 생성 SELECT * FRO.. 2024. 1. 25. 이전 1 다음