반응형

디자인 패턴 2

스테이트 패턴(State Pattern)

스테이트 패턴 스테이트 패턴은 객체가 어떠한 동작을 수행할 때 객체의 '상태(state)'에 따라 다른 동작을 수행하도록 하는 상황에서, 객체의 상태를 직접 체크하는 것이 아닌 상태 자체를 객체화하여 상태 객체가 동작을 수행하도록 위임하는 패턴이다. 예시 게임 캐릭터를 가지고 예시를 한 번 들어보도록 하자. const val SEATING = "seating" const val STANDING = "standing" fun main(){ var player = Player() player.rightClick() player.setState(SEATING) player.rightClick() } class Player(){ private var state = STANDING fun setState(stat..

스트래티지 패턴(Stratagy Pattern)

스트래티지 패턴 스트래티지 패턴은 행위(Behavior)들을 캡슐화하여 동적으로 자유롭게 바꿀 수 있게 하여 전략(Stratagy)을 쉽게 바꿀수 있게 해주는 패턴이다. 코드에서 달라지는 부분을 찾아내어 분리시킨 뒤, 이를 캡슐화한다. 상속보다는 구성을 활용하며, 구현이 아닌 인터페이스에 맞춰서 프로그래밍 한다. 예시 어떤 게임에 셋의 캐릭터가 존재한다고 생각해보자. abstract class Player{ fun attack(){ println("공격합니다.") } fun walk(){ println("걷습니다.") } abstract fun display() } class Warrior: Player(){ override fun display(){ println("전사입니다.") } } class F..

반응형