전략 패턴이란 같은 기능이지만, 서로 다른 전략을 가진 클래스들을 캡슐화하여 상호 교환할 수 있도록 도와주는 디자인 패턴입니다. 전략 패턴 예시 현재 시스템은 VIP 회원에 대한 2,000원 할인을 해주는 정책을 기본적으로 제공하고 있으며, 상황에 따라 새로운 정책이 추가될 가능성이 높은 상황입니다. 아래의 코드를 보면서 전략 패턴을 설명하도록 하겠습니다. 회원 등급을 가지고 있는 Member 클래스 public class Member { private final Long id; private final String name; private final Grade grade; public enum Grade { BASIC, VIP } public Member(Long id, String name) { th..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/rHDn2/btre5bsTHvI/8S7KNjkmJm8DQNKkt9PO6K/img.png)
사용자는 C 타입 형태만 지원하는 맥북을 구매했습니다. 사용자가 USB 포트를 사용하려면, USB와 C 타입을 호환할 수 있는 어댑터가 필요하게 됩니다. 사용자는 어댑터를 통해 어떠한 USB 포트를 가져와도 문제없이 C 타입의 맥북을 사용할 수 있습니다. 이처럼 어댑터 패턴은 호환성이 없는 인터페이스 때문에 함께 동작할 수 없는 클래스들이 함께 동작하도록 해주는 패턴입니다. Client Adaptee를 사용하려는 사용자를 의미한다. Adaptee 라이브러리나 외부 시스템을 의미한다. Adapter Client와 Adaptee 중간에서 호환성이 없는 둘을 연결시켜주는 역할이다. Target Interface를 구현하며, Client는 TargetInterface를 통해 Adapter에 요청을 보낸다. Ad..
MongoDB를 사용하여 간단한 프로젝트를 진행하는 도중, MongoDB 인증을 설정하는 방법에 대해서 정리해봤습니다. (Docker 기반의 내용을 다루고 있습니다.) docker-compose를 통한 Mongo 컨테이너 실행 docker-compose.yml는 아래와 같은 내용들로 정의되어 있습니다. version: '3.3' services: my-mongo: image: mongo container_name: my-mongo ports: - "27017:27017" # Authentication를 설정하기 위해서, command: [--auth]를 주석 처리해야한다. 나머지 내용은 따로 정리하고 링크를 달 것! # command: [--auth] restart: always netwo..