본문 바로가기

Pattern5

Factory Method Pattern이란? 팩토리 메소드 패턴은 객체 생성을 직접하지 않고 하위 클래스가 어떤 객체 생성을 할지 결정하도록 위임하는 디자인 패턴이다.Item 인터페이스를 만들고 안에 use() 라는 메서드를 만든다.Item을 implements하는 아이템, 예를 들면 Hp포션, Mp포션이 있다고 가정하면 Hp포션과 Mp포션을 직접 생성하는 것이 아니라 팩토리 메소드에서 생성하게 하는 것이다.팩토리 메소드(Creator)라는 추상클래스를 만들고 추상클래스안에 create()라는 추상메서드를 만든다.이 추상메서드 create()는 일련의 프로세스가 존재할 것이다.(ex. DB에서 만들 Hp포션정보 획득->객체 생성->객체 생성 로그 저장)그러면 이 것을 받는 extends 하는 하위클래스(PotionCreator)를 만들고 여기서 들.. 2022. 9. 1.
SAGA Pattern 이란 ? SAGA 패턴은 서비스 별 각 트랜잭션이 단일 서비스 내의 데이터를 갱신하는 일련의 로컬 트랜잭션을 의미한다.첫번째 서비스의 트랜잭션이 완료되면 두번째 서비스의 트랜잭션이 동작하도록 트리거 되는 방식이라 생각할 수 있다.SAGA 패턴은 크게 두가지 방식으로 구현할 수 있다.Event / Chreography : 각 로컬 트랜잭션이 이벤트를 발생시키고, 다른 서비스가 트리거 하는 방식Command / Orchestration : 오케스트레이터가 어떤 트랜잭션을 수행할 건지 알려주는 방식그럼 각 방식에 대해 간단히 살펴보자.Event/Chreography각 서비스 마다 자신의 트랜잭션을 관리하며 현재 상태를 변경한 후 이벤트를 발생시키고, 그 이벤트를 다른 서비스에 전달하는 방식으로 트랜잭션이 처리된다.결과.. 2022. 9. 1.
Strategy pattern 이란? 전략패턴! 은 쉽게 말해서 상속받은 객체마다 다를 수 있는 행위부분(메서드)을 캡슐화해 교환하여 사용하는 패턴이다.예를 들어 'LOL(게임)'에 챔피언이라는 추상클래스가 있고 그것을 상속받는 자식클래스를 만들 때, '기본공격' 메서드를 상속받아 재정의한다고 가정한다면(누군가는 원거리공격을 하고 누군가는 근접공격, 망치, 단검등...), 잘 사용할 수 있을 것 같다.하지만 기본공격이 없는 챔피언이 추가되거나 새로운 기능을 가진 챔피언이 추가된다면 해당되지 않는 메서드를 가지고 있어야 하거나 다시 제거시 번거로움이 있다.인터페이스로 기능마다 만들려고 한다면 많은 기능이 있을 때 객체마다 다르게 implements해야하는 단점이 있다.그래서 이것을 해결하기위해서 변경이 많은 부분은 인터페이스로 정의하고 인터페.. 2022. 8. 29.
Template Method Pattern 이란? 템플릿, 말 그대로 템플릿을 만들어주고 특정 메서드 안을 채워넣기만 하면 되는 디자인 패턴이다. (PPT 템플릿처럼 제목, 목차, 내용, 질의응답 칸이 있고 거기에 맞게 글을 채워넣듯)예를 들어 하나의 기능(게임 접속 과정(GameConnectMgr)에 4가지의 절차(보안->인증->권한->접속)를 개발해야 할 때, 필요에 따라 변경되는 부분을 하위클래스에 위임하도록 하고 템플릿을 보내주는 방법이다.A->B->C->D, A->B->C'->D, A->B->C''->D 처럼 다양하게 존재할 때 A->B->□->D 라는 템플릿을 만들어주고 하위클래스에서 구현하며, 기능을 작동시키는 방법이다.* 특히 C메서드는 절차이므로 외부에 공개되면 안되지만 상속받은 하위클래스에서는 접근가능해야하므로 protected 접근지.. 2022. 8. 29.
Singleton Patter이란? 싱글톤 패턴(Singleton Pattern)​싱글톤 패턴​애플리케이션이 시작될 때 어떤 클래스가 최초 한번만 메모리를 할당하고(Static) 그 메모리에 인스턴스를 만들어 사용하는 디자인패턴.​생성자가 여러 차례 호출되더라도 실제로 생성되는 객체는 하나고 최초 생성 이후에 호출된 생성자는 최초에 생성한 객체를 반환한다. (자바에선 생성자를 private로 선언해서 생성 불가하게 하고 getInstance()로 받아쓰기도 함)​=> 싱글톤 패턴은 단 하나의 인스턴스를 생성해 사용하는 디자인 패턴이다.​(인스턴스가 필요 할 때 똑같은 인스턴스를 만들어 내는 것이 아니라, 동일(기존) 인스턴스를 사용하게함)​​​싱글톤 패턴을 쓰는 이유​고정된 메모리 영역을 얻으면서 한번의 new로 인스턴스를 사용하기 때문에.. 2022. 8. 29.