코코코딩공부/디자인 패턴

    [디자인 패턴] 상태 패턴

    들어가며 체스 미션을 진행하면서 상태 패턴을 사용하였다. 상태 패턴을 적용한 이유는 체스 게임이 시작, 종료, 진행 상태로 나누어진다고 생각하였다. 이에 대해 정리해보려고 한다. 상태 패턴 내부 상태를 바꿈으로써 객체가 행동을 바꿀 수 있게 해준다. 별도의 클래스로 캡슐화 한 후 다음 상태를 나타내는 객체에게 행동하도록 요구하여 상태를 변경할 수 있따. 체스 미션에는 시작, 진행, 종료 상태가 있다. 이 상태에 따라 코드를 구현하고자 한다면 final static int START = 0; final static int RUNNING = 1; final static int END = 2; int state = END; public void start(){ if (state == start) { state..

    [디자인 패턴] 전략 패턴

    들어가며 우테코에서 사다리타기 게임을 하면서 사다리 게임을 직접 실행하는 Game 도메인을 만들었다. 하지만 이 도메인은 하는일이 게임실행 + 결과값 저장 및 도출 기능을 가지고 있는 매우매우 비대한 사이즈의 도메인이였다. 그래서 이 도메인을 줄이기 위해 고민을 했었는데 카프카가 사다리타기 문제에 전략 패턴을 접목할 수 있다고 하여 알아보게 되었다. 사다리타기 클래스를 외부에서 주입해주고 테스트 할 때는 테스트용 사다리타기 클래스를 주입하여 더 간단하게 사용할 수 있을 것 같았다. 전략 패턴 정의 전략 패턴이란 실행 중에 알고리즘을 선택할 수 있게 하는 행위 소프트웨어 디자인 패턴이다. 여기서 말하는 알고리즘은 하나의 전략 이라고 생각하면 된다. 로직 실행은 인터페이스에 의존을 시키고 인터페이스를 구현한..

    [개발 패턴] TDD

    TEST DRIVE DEVELOPMENT 테스트 주도 개발에 대한 많은 이야기를 들었었다. 쓰레기라느니 좋다느니.. 등등 나는 실제로 와닿지는 않았는데 우아한테크코스를 경험하면서 필요성을 느꼈다. 내가 느낀 필요성은 프로덕션 코드를 작성하고 테스트 코드를 작성하면 테스트하기 너무 힘든 메소드 같은 것들이 생길 때 필요하다고 느꼈다. 먼저 테스트 코드를 짜고 프로덕션을 맞춘다면 충분히 좋게 테스트코드를 짤 수 있다고 생각했다. TDD란 Test First Development + 리팩토링을 의미한다. TEST -> FEAT -> REFACTOR 가 반복된다고 생각한다. TDD 하는 이유 디버깅 시간을 줄여준다. 동작하는 문서 역할을 한다. 변화에 대한 두려움을 줄여준다. TDD 원칙 1. 실패하는 단위 테..

    [디자인 패턴] MVC 패턴

    MVC 패턴이란 MVC 패턴이란 MODEL, VIEW ,CONTROLLER 로 나누어 역할을 수행하는 디자인 패턴 중에 하나이다. 이 패턴은 모듈화를 통해 유지보수가 쉽기에 사용하며, 커뮤니케이션에 좋고, 역할을 나누기에 단일책임원칙에 따라 좋은 설계가 될 수 있다. 역할분리를 통해 유지보수,확장성,소통이 좋기에 MVC패턴을 사용한다. 사용자가 입력을 하면 요청View를 통해 요청이 들어온다. 이 요청은 Controller가 받는다. Controller는 Model을 통해 데이터를 가져오고 이 데이터를 기반으로 출력View를 통해 사용자에게 전달한다. Model 데이터에 대한 정보가 있다. 비즈니스 로직을 가진 객체라고 할 수 있다. 내부 비즈니스 로직을 처리한다. DB와 연동하여 사용자의 데이터를 처리..