공부
-
[Design Pattern] 커맨드 패턴 (Command Pattern)공부/디자인 패턴 2021. 6. 12. 19:02
커맨드 패턴은 특정 객체에 대한 커맨드를 객체화 하여 커맨드 객체를 필요에 따라 처리하는 패턴입니다. 보통 주체 객체 → 대상 객체 와 같은 방식으로 호출한다면 대상 객체에 대한 액션은 주체 객체에서 메소드로 처리하는데 이 액션을 객체로 만들어 처리하는 방식입니다. 실행될 기능을 캡슐화함으로써 여러 기능을 실행할 수 있어 재사용성이 높습니다. 또한 기능이 수정되거나 변경이 일어났을 때, 주체 객체의 코드 수정 없이 기능에 대한 클래스만 정의하면 되어 확장성이 유연해집니다. 클래스 다이어그램 Invoker: 기능의 실행을 요청하는 호출자 클래스. Client의 요청을 받아 Receiver의 액션을 호출. Command: 실행될 기능에 대한 인터페이스. 실행될 기능을 execute()로 정의 Concrete..
-
[Design Pattern] 템플릿 메소드 패턴 (Template Method Pattern)공부/디자인 패턴 2021. 6. 6. 18:13
템플릿 메소드 패턴이란 여러 클래스에서 공통적으로 호출, 사용하는 메소드들을 상위 클래스에서 정의하고 이 상위 클래스를 상속 받은 하위 클래스에서 세부 동작을 구현하는 패턴을 말합니다. 이는 객체 지향 언어로 개발할 때, 해당 패턴을 알지 못해도 많이 사용하고 접하는 패턴입니다. 템플릿 메소드 패턴을 사용하면 중복 코드를 제거할 수 있고 상속을 받은 하위 클래스의 역할이 줄어 로직 관리가 편합니다. 하지만 추상 메소드가 많아진다면 클래스의 관리가 복잡해 진다는 단점이 있습니다. 클래스 다이어그램 예제 예를 들어, 아래와 같이 공항에 도착해 티켓을 발권받는 과정을 코딩한다면 아래와 같습니다. public class IncheonAirport { public void check() { checkPasspor..
-
[Design Pattern] 데코레이터 패턴(Decorator Pattern)공부/디자인 패턴 2021. 5. 31. 21:37
데코레이터 패턴이란 어떤 객체에 상황과 용도에 따라 새로운 책임을 추가하는 형식입니다. 객체에 기능을 동적으로 추가하여 서브 클래스를 생성하는 것보다 유연하게 기능을 확장할 수 있습니다. 클래스 다이어그램 Component: ConcreateComponent와 Decorator를 위한 인터페이스. ConcreteComponent: 기능 추가를 받을 기본 객체 Decorator: 기능 추가를 할 객체를 위한 추상 클래스 ConcreteDecorator: Decorator를 상속받아 구현할 객체. ConcreteComponent에 추가하기 위해 생성 예제 카페를 차려서 커피를 팔게 되어 아래와 같이 메뉴를 구성했습니다. public interface Beverage { int getCost(); String..
-
[Design Pattern] 옵저버 패턴 (Observer Pattern)공부/디자인 패턴 2021. 5. 22. 22:44
옵저버 패턴이란 한 객체의 상태가 변경이 되면 해당 객체를 의존하고 있는 모든 객체에게 의존하고 있는 객체의 상태가 변경되었다고 알려주는 디자인 패턴입니다. 여기서 상태가 변경되었는지 관찰 대상 객체를 subject라 하고 이러한 변경을 관찰하는 객체를 observer라 합니다. 즉, observer 객체들은 subject에 의존성을 갖습니다. subject 객체를 관찰하여 변경을 감지하고자 하는 객체를 observer로 등록하고 변경이 되었을 때, 이를 탐지할 수 있습니다. 이해하기 쉬운 예제를 들면, 유튜브를 생각하면 됩니다. a라는 유튜브 채널(subject)을 A, B, C 라는 사람이 구독을 하게 되면(observer) 해당 채널에 새로운 영상이나 글이 올라올 경우(객체의 상태 변경), 해당 유..
-
[Design Pattern] 책임 연쇄 패턴 (Chain of Responsibility Pattern)공부/디자인 패턴 2021. 5. 15. 19:13
클라이언트에게 어떠한 요청이 들어왔을 때, 요청을 받은 객체가 해당 요청을 해결할 수 없을 경우 연결된 다음 객체들에 전달하고 해당 요청을 해결할 수 있는 객체가 처리하는 방식입니다. 요청 객체와 처리 객체를 분리하거나 요청을 처리할 수 있는 객체가 여러 개인데 하나의 객체에 요청을 보낼 때 책임 연쇄 패턴을 적용할 수 있습니다. 즉, 요청을 처리할 수 있는 객체가 여러개이고 이러한 처리를 하는 객체가 명시적이지 않을 때 사용할 수 있는 패턴입니다. 클래스 다이어그램 Handler: 요청을 처리하기 위한 객체들이 가질 인터페이스 ConcreteHandler1, 2: 요청 종류에 따라 자신이 처리 할 수 있는 부분을 구현한 객체 Client : 수신자에게 처리 요청 장점 요청의 발신자와 수신자를 분리시킬 ..
-
[Design Pattern] 프록시 패턴 (Proxy Pattern)공부/디자인 패턴 2021. 5. 9. 20:13
프록시 패턴이란 프록시 의미 그대로 실제 기능을 수행하는 주체(RealSubject)를 바로 호출하는 대신 대리자(Proxy)를 거쳐서 호출하는 것입니다. 즉, 클라이언트 → 실제 기능을 담당하는 객체 가 아닌, 클라이언트 → 프록시 객체 → 실제 기능을 담당하는 객체의 흐름으로 진행됩니다. 클래스 다이어그램 장점 실제 기능을 담당하는 객체의 리소스가 무거운 경우, 프록시 객체에서 간단한 처리를 하거나(클라이언트의 요청에 대한 유효성 검사를 통해 유효한 경우만 메인 객체 호출) 캐싱 처리를 통해 부하를 줄일 수 있습니다. 앞에서 설명한 간단한 처리를 통해 보안의 역할을 가질 수 있습니다. 단점 아무래도 클라이언트 - 메인 객체 사이에 프록시 객체가 끼어있는 상황이기에 응답이 느리거나 에러를 발생할 수도 ..
-
Z 차트로 매출의 추이 확인하기공부/데이터 2021. 2. 28. 16:36
고객에게 제공하는 서비스, 상품, 콘텐츠 중에는 계절에 따라 매출이 변동하는 경우가 있습니다. Z 차트를 작성할 때는 월차매출, 매출누계, 이동년계 라는 3가지 지표가 필요합니다. z차트(https://kb.tableau.com/articles/howto/Create-Z-Chart-Numbers-Accumulated-Total-Numbers-Movement-Total-Numbers-Within-a-Year-in-a-View?lang=ko-kr) 월차매출 매출 합계를 월별로 집계합니다. 1월 2월 3월 4월 5월 6월 7월 8월 9월 10월 11월 12월 1월 2월 3월 합계 합계 합계 매출누계 해당 월의 매출에 이전월까지의 매출 누계를 합하여 집계합니다 1월 2월 3월 4월 5월 6월 7월 8월 9월 1..
-
gRPC란?공부 2020. 9. 27. 23:13
gRPC는 구글에서 만든 RPC 시스템입니다. gRPC를 설명하기에 앞서 RPC가 무엇인지 설명을 합니다.RPC란?RPC는 Remote Procedure Call로 프로세스간 통신 기법 중 하나입니다. 다른 프로세스에 있는 함수를 호출할때, 마치 같은 프로세스 내에 있는 것처럼 호출할 수 있습니다. 클라이언트는 일반 로컬 메소드를 호출하는 것처럼 사용하면 됩니다. RPC는 다양한 환경, 플랫폼에 제약없이 사용할 수 있어 분산 시스템 기법에 효과적입니다.Caller/CalleeClient(Caller)와 Server(Callee)는 사용자가 필요한 비지니스 로직을 작성하는 레이어IDL(Interface Definition Language)을 사용하여 서로의 인터페이스를 명시StubStubComplier가 ..
-
[UML] 시퀀스 다이어그램 (Sequence Diagram)공부 2020. 8. 1. 22:51
시퀀스 다이어그램은 특정 행동이 어떠한 순서로 어떤 객체와 어떻게 상호작용을 하는지 표현하는 행위 다이어그램입니다. 현재 존재하는 시스템이 어떠한 시나리오로 움직이고 있는지를 나타내는데 장점을 가지고 있습니다. 시퀀스 다이어그램을 이용하면 API 등의 유즈 케이스를 디테일하게 알 수 있고 타 시스템의 API 호출 등의 로직을 모델링할 수 있어 시나리오를 파악하기 좋습니다.예를 들어, 고객이 29CM 사이트 주문을 했을 때 고객이 주문한 시점부터 29CM 사이트의 주문 처리 순서, 이후 반환 케이스를 연속적으로 표현할 수 있습니다.Lifeline모델링 되는 인스턴스를 나타냅니다. Lifeline은 네모와 점선으로 이루어져 있으며 네모가 객체의 관점으로 표현했다면 클래스이고 서비스 관점으로 표현했으면 컴포넌..
-
UML 다이어그램공부 2020. 8. 1. 21:33
UML이란?Unified Modeling Language 의 약어로 시스템을 모델로 표현해 주는 대표적인 언어로 생각할 수 있습니다. 개발자가 자신의 생각을 구축하고 반영하는데 있어서 표준적이고 이해하기 쉬운 방법으로 할 수 있도록 도와주며, 자신의 설계 결과물을 다른 사람과 효과적으로 주고받으며 공유할 수 있는 메커니즘을 제공합니다.다이어그램이란?다이어그램(diagram)은 정보를 시각화하여 보다 쉽게 이해할 수 있도록 표현하는 기술입니다. 보통은 2차원(도형)으로 그리지만 3차원 공간에 시각화를 하기도 합니다.UML 다이어그램이란?위의 UML과 다이어그램을 합쳐서 시스템을 모델로 표현하기 위해 이를 시각화 하는 기술입니다. 구조 다이어그램(Structure Diagram)과 행위 다이어그램(Behav..