전체보기(194)
-
Factory Pattern
1. Factory Method Pattern Factory Method Pattern은 객체를 생성하기 위한 인터페이스를 정의하는데, 어떤 인스턴스를 생성할지는 서브 클래스에서 결정하도록 하는 디자인 패턴입니다. Factory Method Pattern은 사용하는 인스턴스를 직접 생성하지 않고 팩토리 클래스를 통해 인스턴스를 생성합니다. 이렇게 객체의 생성과 사용을 분리함으로써 효율적으로 코드를 제어할 수 있고 결합도를 낮춰 유지보수가 용이합니다. 아래의 예제와 같이 생성합니다. Suit public abstract class Suit{ public abstract String getName(); } Suit의 구현 클래스 // SpaceSuit public class SpaceSuit extends ..
2020.05.06 -
Chain Of Responsibility
1. Chain Of Responsibility Chain Of Responsibility란 요청을 처리할 수 있는 기회를 하나 이상의 객체에 부여함으로써 요청하는 객체와 처리하는 객체 사이의 결합도를 제거하는 패턴입니다. 요청을 해결할 객체를 만날 때까지 객체 고리를 따라서 요청을 전달합니다. 일반적으로 처리할 수 있는 모든 객체들을 고리로 묶고 맨 처음 객체에게 전달하여 처리하지 못하면 다음 객체로 넘기는 방식으로 진행됩니다. 아래를 예제를 통해 어떻게 구현되는지 확인할 수 있습니다. 예제를 보면 숫자를 요청으로 전달했을 때, 객체 고리를 따라서 데이터를 전달합니다. 체인 public interface Chain { public abstract void setNext(Chain nextInChain)..
2020.05.02 -
Observer Pattern
1. Observer Pattern Observer Pattern이란 한 객체의 상태 변화에 따라 다른 객체의 상태도 연동되도록 일대다 객체 의존 관계를 구성하는 패턴입니다. 데이터의 변경이 발생했을 경우, 상대 클래스나 객체에 의존하지 않으면서 데이터 변경을 통보하고자 할 때 유용합니다. 위의 이미지를 보면 Subject 인터페이스의 구현체의 상태에 변화가 있을 때, Observer 들에게 notify를 통해 상태 변화를 알려주는 것을 의미합니다. 2. ObserverPattern의 예시 예를 들어, 어떤 유저와 채팅 방이 있다고 가정하겠습니다. 유저는 채팅방에 말할 수 있고, 채팅을 받을 수 있습니다. 그리고 유저는 채팅방, 게임방에 임장을 해 각 채팅방에 메시지를 전달하는 상황입니다. 유저 publ..
2020.05.02 -
Template Method Pattern
Template Method Pattern이란 Template Method Pattern이란 전체적으로는 동일하면서 부분적으로는 다른 구문으로 구성된 메소드의 코드 중복을 최소화하는 패턴입니다. 동일하게 사용하는 기능은 부모 클래스에서 정의하면서 확장 / 변화가 필요한 부분만 자식 클래스에서 구현할 수 있도록 합니다. 구현은 아래의 게임 속 직업별 클래스를 구현한 예제를 확인해 봅니다. 전사 class Warrior { void prepareWeapon() { System.out.println("검을 닦습니다."); } void prepareArmor() { System.out.println("방어구를 착용합니다."); } } 궁사 class Archer { void prepareWeapon() { Sy..
2020.05.01 -
Spring Singleton
Spring Singleton 패턴의 특징 우리가 일반적으로 알고 있는 Java Singleton은 생성자를 private으로 선언하고 참조 변수를 static을 정의하는 것을 이용해 Classloader가 하나의 인스턴스만 만들도록 구현합니다. 하지만 Spring Singleton은 Classloader가 아니라 Spring Container에 의해 구현됩니다. 컨테이너 내에서 특정 클래스에 대해 @Bean, @Component가 정의되면, Spring Container는 그 클래스에 대해 한 개의 인스턴스만 만듭니다. 이 공유 인스턴스는 설정 정보에 의해 관리되고, Bean이 호출될 때마다 Spring은 생성된 공유 인스턴스를 리턴합니다. 여기서 Spring Container에 의해 구현되는게 어떤 ..
2020.05.01 -
Singleton Pattern
1. Singleton Pattern이란 Singleton Pattern이란 전역 변수를 사용하지 않고 객체를 하나만 생성하도록 하며, 생성된 객체를 어디에서든지 참조할 수 있도록 하는 패턴입니다. 아래의 예제를 통해 Singleton Pattern을 살펴보겠습니다. public class Printer { // 외부에 제공할 자기 자신의 인스턴스 private static Printer printer = null; private Printer() { } // 자기 자신의 인스턴스를 외부에 제공 public static Printer getPrinter(){ if (printer == null) { // Printer 인스턴스 생성 printer = new Printer(); } return printe..
2020.04.27