Jay's Dev Note

어댑터 & 파사드 패턴

🧤 어댑터 & 파사드 패턴이란 어댑터 패턴 한 클래스의 인터페이스를 클라이언트에서 사용하고자하는 다른 인터페이스로 변환한다. 어댑터를 이용하면 인터페이스 호환성 문제 때문에 같이 쓸 수 없는 클래스들을 연결해서 쓸 수 있다. 파사드 패턴 어떤 서브시스템의 일련의 인터페이스에 대한 통합된 인터페이스를 제공한다. 퍼사드에서 고수...

옵저버 패턴

🔭 옵저버 패턴이란 옵저버 패턴(observer pattern)은 객체의 상태 변화를 관찰하는 관찰자들, 즉 옵저버들의 목록을 객체에 등록하여 상태 변화가 있을 때마다 메서드 등을 통해 객체가 직접 목록의 각 옵저버에게 통지하도록 하는 디자인 패턴이다. 클래스 다이어그램 옵저버 패턴은 주제와 옵저버가 느슨하게 결합되어 있는 객체 디자인...

스트레티지 패턴

📍 스트레티지 패턴이란 알고리즘군을 정의하고 각각 캡슐화하여 교환해서 사용할 수 있도록 만든다. 스트래티지패턴을 활용하면 알고리즘을 사용하는 클라이언트와는 독립적으로 알고리즘을 변경할수 있다. 🦆 활용예제 : 오리 게임 만들기 오리 어플리케이션 게임을 운영하는 회사를 다니면서 오리게임을 만든다고 가정했을때. 표준적인 객체지향 기법을 사...

컴포지트 패턴

🌲 컴포지트 패턴이란 객체들을 트리 구조로 구성하여 부분과 전체를 나타내는 계층구조로 만들수 있다. 클라이언트에서 개별 객체와 다른 객체들오 구성된 복합 객체(composite)를 똑같은 방법으로 다룰 수 있다. 식당 메뉴를 예로들어 생각해본다면 중첩되어 있는 메뉴 그룹과 메뉴 항목을 똑같은 구조 내에서 처리할수 있게끔 하는 것이다. 메뉴...

이터레이터 패턴

🎛 이터레이터 패턴이란 컬렉션 구현 방법을 노출시키지 않으면서도, 그 집합체 안에 들어있는 모든 항목에 접근할 수 있는 방법을 제공한다. 컬렉션 객체 안에 들어있는 모든 항목에 접근하는 방식이 통일되어 있으면 어떤 종류의 집합체에 대해서도 사용할 수 있는 다형적인 코드를 만들수 있다. 이터레이터 패턴을 사용하면 모든 항목에 일일이 접근하는...

템플릿메소드 패턴

📦 템플릿메소드 패턴이란 메소드에서 알고리즘의 골격을 정의한다. 알고리즘의 여러 단계 중 일부는 서브클래스에서 구현할 수 있다. 템플릿 메소드를 이용하면 알고리즘의 구조는 그대로 유지하면서 서브클래스에서 특정 단계를 재정의 할 수 있다. 알고리즘의 틀을 만들기 위한 패턴이다. 이 패턴에서 틀(템플릿)이란 일련의 단계들로 알고리즘을 정의한 메...

커맨드 패턴

👋 커맨드패턴이란 레스토랑에서 주문을 했다고 가정하자 손님은 항상 요리의 요리 방법을 알아야 하는가? 손님은 그저 웨이터에게 주문만 하면 된다. 요리 방법법을 알아야만 하는 건 요리사 뿐이다. 커맨드 패턴(Command pattern)이란 요청을 객체의 형태로 캡슐화하여 사용자가 보낸 요청을 나중에 이용할 수 있도록 매서드 이름, 매개변수 ...

분산 시스템을 위한 유일 ID 생성기 설계

데이터베이스의 PK 세팅 전략을 세우려 한다. 그냥 DB에서 auto_increment 하면 되지 않나? ➡️ 분산되어있는 환경이기 때문에 불가능하다. 분산 DB 환경에선 생각보다 쉽지 않다. 방법을 찾아보자. 1단계 : 문제이해 및 설계범위 확정 시스템 설계 면접의 첫 단계는 적절한 질문을 통해 모호함을 없애고 설계 방향을 정하는...