디자인 패턴 3

전략 패턴, 템플릿 콜백 패턴

1. 전략 패턴 1.1. 전략 패턴이란? 전략 패턴은 프로그램 수행 중에 알고리즘을 선택할 수 있도록 만든 패턴입니다. 선택할 알고리즘이 바로 '전략(Strategy)'이 되는것이죠. 👏 그리고 이 전략을 선택하는 주체인 '컨텍스트(Context)'가 필요합니다. Context는 문맥이란 뜻인데요. 아마도 맥락에 따라 서로 다른 전략을 선택하기 때문에 붙은 이름이 아닐까 싶습니다. 👀 Context는 전략을 수행하는 객체라고 봐도 무방할 것 같네요. 마지막으로 Context에 Strategy를 주입해주는 '클라이언트(Client)'가 필요합니다. Context가 직접 전략을 선택하지 못하기 때문이죠. 따라서 클라이언트가 Context에게 문맥에 맞는 Strategy를 '주입(DI:Dependancy In..

팩토리 메서드, 템플릿 메서드 패턴

1. 팩토리 메서드 패턴 팩토리 메서드 패턴(Factory Method Pattern)이란 객체 생성을 하는 클래스를 따로 두는 것입니다. 그래서 공장(Factory)이라는 표현을 쓰나봅니다. 🙂 실질적인 클래스의 구현은 하위 클래스에서 이루어지는데요. 이렇게 되면 상위 클래스는 하위 클래스의 구현내용을 모르더라도 사용이 가능합니다. 어려운 말로 객체간 결합도가 낮아진다고 하는데요. 결합도란 모듈이 어떤 작업을 수행할 때, 다른 모듈에게 얼마나 의존하느냐입니다. 결합도가 낮아지면 유지보수 하기가 쉬워집니다. 예시를 먼저 보는게 빠를 것 같습니다. 현대자동차에서 차를 만든다고 가정해보겠습니다. 그럼 자동차 공장에 팩토리 메서드를 두고, 공장에서 승용차, 버스, 스쿠터 등을 생성하도록 두는 것이죠. 😊 UM..

싱글톤, 프록시, 데코레이터 패턴

객체 지향 디자인 패턴 종류 1. 싱글톤 패턴 이번엔 싱글톤 패턴에 대해서 알아보겠습니다. 🙂 싱글톤 패턴이란 인스턴스를 하나만 만들어 사용하기 위한 패턴입니다. 예를 들어 단 하나의 관리자 계정을 여러 명이서 사용하는 경우입니다. 이런 경우 어떻게 코딩하면 좋을까요? 하나의 Admin 계정을 여러 명이 공유해서 사용하는 프로그램을 짜보겠습니다. package exSingleton; // Admin 클래스 public class Admin { // 정적 참조 변수 static Admin one_id; // 객체 생성 방지 private Admin() {}; // 정적 메소드 public static Admin getInstance() { // 참조 변수 == null일 때 객체 생성 if (one_id ..