싱글톤( Singleton Pattern ) 패턴이란? 싱글톤 패턴은 인스턴스를 만드는 절차를 추상화시키는 생성 패턴 중의 하나입니다. 싱글톤 패턴은 클래스의 인스턴스를 하나만 생성하고, 생성된 하나의 인스턴스에 접근하는 방법을 제공합니다. 인스턴스가 딱 하나만 있어도 되는 것들로는 Factory, Thread Pool, Connection Pool, Logger 등이 있습니다. 싱글톤 패턴의 구현 방법 싱글톤 패턴을 구현하는 방법은 몇 가지가 있는데, 가장 심플한 방법부터 차츰 약점을 보완하는 식으로 알아보겠습니다. 다음은 대중적으로 가장 많이 알려진 구현 방법입니다. public class Singleton { private static final Singleton instance = new Sing..
커맨드 패턴 (Command Pattern) 커맨드 패턴은 객체의 행위(메서드)를 클래스로 만들어 캡슐화하는 패턴이다. Head-First Design Pattern 책을 보면 해당 패턴을 리모컨을 예로 들어 설명한다. 설명에 앞서, 커맨드 패턴에는 4개의 개념이 있다. command 해당 패턴의 핵심은 객체의 행위(메서드)를 클래스로 만든다는 것이다. 이렇게 만들어진 클래스를 가리킴. 일련의 행동을 특정 receiver하고 연결시킴으로써 캡슐화한다. 예를 들어, 전등을 켠다라는 행위( 메서드 )를 클래스로 만든다고 해보자. 그럼 이 클래스에는 전등에 해당하는 객체가 있어야겠지 ? 여기서 전등 객체가 receiver 객체 ! receiver 위에서 예로 든걸 이어서, 전등을 켠다라는 행위에 대한 클래스를..
어탭터 패턴 한 클래스의 인터페이스를 클라이언트에서 사용하고자 하는 다른 인터페이스로 변환하는 걸 어댑터 패턴이라 한다. 어댑터를 이용하면 인터페이스 호환성 문제 때문에 같이 쓸 수 없는 클래스들을 서로 연결해서 사용할 수 있다. 예를 들어보자, 내가 만든 SW 시스템에 새로운 업체에서 제공한 클래스 라이브러리를 적용해야 한다고 해보자. 그런데 새로 채택한 업체에서 사용하는 라이브러리의 인터페이스가 기존 업체의 인터페이스와 다르다면 ? 이런 경우 인터페이스를 맞춰주기 위해 '어댑터'를 사용할 수 있다. 용어 정리 한 번 해보면 어댑터(Adapter) : 클라이언트와 직접적으로 맞닿는 인터페이스 ! 어댑티(Adaptee) : 어댑터를 이용해 인터페이스를 맞춰줘야할 대상 ! ( 위의 예에서 새로운 업체의 클..
1. 간단한 팩토리 팩토리 메서드 패턴과 추상 팩토리 패턴을 알아보기 전에 우선, 팩토리가 무엇인지를 알아야합니다. 팩토리는 객체 생성을 처리하는 클래스를 일컫습니다. 아래 코드에서 객체를 생성하는 부분이 if~ else if 로 하드코딩되어 있는데, 이 부분을 팩토리로 뺄 수 있습니다. public class PizzaStore { Pizza orderPizza(String type) { Pizza pizza; // 아래 부분이 구체적인 객체를 생성하는 부분입니다. // 객체를 생성하는 부분은 새로운게 추가되거나 없어지는 등 언제든 변할 수 있습니다. if (type.equals("cheese")) pizza = new CheesePizza(); else if (type.equals("greekPizz..
데코레이터 패턴 데코레이터는 우리 말로 '장식'이다. 이름 그대로 그러한 장식(기능)들을 쉽게 추가할 수 있도록 돕는 패턴을 말한다. Window에 대해 이야기해보자. (여기서 Window는 화면을 말한다. GUI 해본 사람이라면 알겠지??) Window 인터페이스를 정의하자. 기능은 2가지만 나타냈다. public interface Window { void draw(); // draws the Window String getDescription(); // returns a description of the Window } 위의 인터페이스의 구현체 하나를 만들자. public class SimpleWindow implements Window { @Override public void draw() { //..
옵저버 패턴 옵저버 패턴은 흔히 출판사-구독자의 관계로 설명된다. 예를 들어, A출판사에서 발행하는 신문기사가 아주 유용하다치자, A출판사에서 발행하는 신문을 받아볼려면 구독을 해야겠지? 그러면 정기적으로 A출판사가 발행하는 신문기사를 받아볼 수 있게 된다. 위의 내용에서 A출판사는 어떤 데이터의 갱신 또는 생성과 같은 이벤트가 발생하면 구독자에게 전달하는 객체. 구독자는 어떤 데이터의 갱신 또는 생성과 같은 이벤트가 발생했음을 A출판사로부터 알림받는 객체. 옵저버 패턴을 구현하는 방법은 여러 가지가 있지만, 일반적으로 Subject 인터페이스, Observer 인터페이스가 들어있는 클래스 디자인을 바탕으로 한다. Entry 포인터를 잡고 public class Main { public static vo..
디자인 패턴이란? 디자인 패턴은 기존 환경 내에서 반복적으로 일어나는 문제들을 어떻게 풀어나갈 것인가에 대한 일종의 솔루션이다. 디자인 패턴은 크게 세 가지로 분류할 수 있다. 생성(Creational) 패턴 싱글톤, 추상 팩토리, 팩토리 메서드, 빌더, ... 등 구조(Structual) 패턴 어댑터, 데코레이터, 파사드, ... 등 행동(Behavioral) 패턴 커맨드, 옵저버, 템플릿 메서드, ... 등 참고자료 [1] readystory.tistory.com/114?category=822867