객체 지향 프로그래밍/디자인 패턴 4

디자인 패턴 이해하기

1. 디자인 패턴 정의 이전 포스팅에서 객체지향특성에 대해 알아보았고, 해당 특성을 이용하며 지켜야할 5가지 원칙이 있었습니다. 그리고 객체 지향 특성들을 '도구', 객체 지향 원칙들을 '도구 사용 방법' 이라고 비유했었습니다. 👌 디자인 패턴은 '도구의 활용 방법'이라고 할 수 있습니다. 우리는 도구의 특징과 어떤 원리로 사용해야 하는지 알고 있습니다. 칼을 예로 들면, 칼은 날카롭고 뾰족한 특징이 있습니다. 그래서 칼은 무엇인가를 자르거나, 찌르는 방식으로 사용할 수 있죠. 칼은 수술을 하거나, 요리를 하거나, 동물을 사냥하는데 활용할 수 있습니다. ✨ 물론 칼로 망치질을 한다던가, 땅을 판다고해도 잡혀가지는 않습니다. 하지만 적절한 활용법은 존재합니다. 개발자들이 공통으로 겪는 '문제들에 대한 해결..

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

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 ..