디자인패턴
3 posts
[디자인 패턴] 3.State 패턴

State 패턴에 대한 UML을 보자마자 든 생각은 ‘어? 이거 Strategy 패턴과 똑같은데?’ 라는 생각이었고, State 패턴에 대한 설명을 듣고 나서 든 생각은 ‘어? 이거 옛날에 Logic design 수업에서 배운 FSM(Finite State Machine)과 비슷하네?’ 라는 생각이었다. 그리고 실제로 FSM 개념을 프로그래밍적으로 구현한 것이 State패턴이다. UML은 Strategy패턴과 사실상 같다고 볼 수 있다. Context 클래스에서 State interface 객체를 가지고 있고, State과 관련된 행동을 State class에게 위임한다. 그렇다면 Strategy와 다른 점은 무엇일까? Strategy 패턴은 공통적 성격이 있는 여러가지 기능을 특정 메소드에서 모드에 따라 다르게 실행되도록 하는 것이라면, State 패턴에서는 특정 메소드가 실행될 때 모드에 따라 다르게 실행되는 점은 동일하지만, 특정 조건에서 모드를 전환시킨다는 점에서 다르다…

February 12, 2022
디자인패턴
[디자인 패턴] 2.Strategy 패턴

Strategy(전략) 패턴의 정의와 UML은 아래와 같다. “여러가지 알고리즘을 하나의 추상적인 접근점(interface)을 만들어 접근점에서 교환 가능하도록 하는 패턴을 Strategy 패턴이라고 한다” Strategy 패턴을 이해하기 위해서는 먼저 interface에 대한 이해, 그리고 delegation에 대한 이해가 필요하다. interface는 객체지향 프로그래밍에서 기능에 대한 선언과 구현을 분리하며 기능을 사용하기 위한 통로를 제공한다 Delegation은 특정 객체의 기능을 사용하기 위해 다른 객체의 기능을 호출하는 것을 말한다. 아래 코드를 보면 금방 이해가 될 것이다. 이제 interface와 delegation에 대해 이해 했으니 다시 돌아가서 Strategy 패턴이 무엇인지 예를 통해 알아보자. 예제 : 게임 캐릭터의 공격 구현 전략 이제 이를 사용하는 게임 캐릭터 클래스를 만들어 보자. GameCharacter 클래스에서는 외부에서 ‘장착’ 시켜준 wea…

February 11, 2022
디자인패턴
[디자인 패턴] 1.Singleton 패턴

싱글톤 패턴의 정의와 UML은 아래와 같다. “소프트웨어 디자인 패턴에서 싱글턴 패턴(Singleton pattern)을 따르는 클래스는, 생성자가 여러 차례 호출되더라도 실제로 생성되는 객체는 하나이고 최초 생성 이후에 호출된 생성자는 최초의 생성자가 생성한 객체를 리턴한다. 이와 같은 디자인 유형을 싱글턴 패턴이라고 한다” 다르게 말하면 프로세스가 실행될 때 한 번만 메모리를 할당하고 해당 메모리에 인스턴스를 만들어서 전역에서 공유하기 위한 패턴이다. 클래스에 딱 하나의 인스턴스만 존재해야 되고, 어플리케이션 전역적인 접근이 필요한 경우에 이를 사용한다. 정의에서는 ‘생성자가 여러 차례 호출되더라도’ 라고 표현했지만, 실제 싱글톤 클래스(A 클래스라고 하자)를 구현할 때는 애초에 외부에서 인스턴스를 생성할 수 없도록 생성자를 private으로 두고, 클래스 안에서 A를 타입으로 하는 static 변수에 static 메소드인 getInstance 메소드를 통해 인스턴스를 생성하…

February 10, 2022
디자인패턴