디자인패턴

    Unity MVVM 패턴

    Unity MVVM 패턴

    목차복습UI ToolkitUnity MVVM결론 MVVM 패턴Unity6에서 UI Toolkit이 적극적으로 권장되고, 2024.07.23 유니티 디자인 패턴 책이 업데이트되면서 MVVM패턴이 추가되어 간단하게만 정리합니다.- MVVM 복습기존 MVP 패턴(1990)은 쉬워진 입력과 비대해진 View 문제를 해결하기 위해, 복잡한 UI와 입력을 개별 View가 처리하고, Presenter에 입력을 해석하여 Model로 요청해 View를 업데이트하는게 목적이었습니다. 주로 옵저버 패턴을 사용해 구현되며 View가 Model을 직접 구독할 수 있고, Presenter를 통해서 진행될 수 있습니다.MVVM 패턴은(2005) View Model이라는 View의 추상화를 생성해 View와 View Model을 바..

    상태 패턴 (State)

    상태 패턴 (State)

    목차FSMStateState vs Strategy 유한 상태 기계 (Finite-State Machine)State 패턴은 FSM을 구현하는 방법 중 하나입니다. 주요 개념은 모든 주어진 순간에 프로그램이 속하는 상태의 수가 유한하다는 점입니다.유한 상태 기계는 유한한 개수의 상태를 가질 수 있는 추상 기계를 뜻합니다. 한 번에 오로지 하나의 상태만을 가지며, 각각의 상태에서 프로그램은 다르게 행동하고, 한 상태에서 연결된 다른 상태로 전환할 수 있습니다.   State 상태 패턴은 객체의 내부 상태에 따라 스스로 행동을 변경할 수 있게 허가하는 패턴으로, 객체가 마치 자신의 클래스를 바꾸는 것처럼 보입니다. (GoF의 디자인 패턴, 395p)간단히 생각하면 상태를 객체화해 현재 상태에 따라 상태 객체를..

    의존성 주입 (Dependency Injection)

    의존성 주입 (Dependency Injection)

    목차DependencyDependency Injection DI Container Unity DI Framework 정리 Dependency Injection(DI)DependencyOOP에서 의존성(Dependecy)란 한 객체가 파라미터, 리턴값, 지역변수 등으로 다른 객체를 참조하는 것을 의미합니다.예를들어 문구점에서 연필, 지우개, 간식 중 하나를 팔 수 있다면, 문구점 객체는 연픽, 지우개, 간식 객체(의존 대상)을 의존하고 있다는 뜻입니다.의존성이 높으면 그 코드를 수정하기 어려워 집니다. 또한 여러 부분과 관계를 맺은 만큼 결합도가 높고 테스트가 힘들 수 있습니다. 그렇기에 '의존성을 낮추기 위해 어떻게 객체를 참조해야할까?'에 대한 고민이 의존성 주입으로 이어집니다.  Dependen..

    싱글톤(Singleton)

    싱글톤(Singleton)

    목차목적문제점Unity 싱글톤정리 Singleton게임개발을 하며 디자인 패턴을 생각하면 가장 처음 떠오르는, 아마 GoF의 디자인패턴 책에서 가장 유명하고 가장 무분별하게 쓰이는 패턴이 싱글톤 패턴일 것입니다.GoF를 포함한 모든 글에서 싱글톤을 남용하지 말라 강조하지만 잘 지켜지지 않습니다. '게임프로그래밍 패턴 (Robert Nystrom)'에서도 '이번 장은 어떻게 하면 패턴을 안 쓸 수 있는지를 보여준다는 점에서 다른 장과는 정반대다.'라 말하는 것을 볼 때 "어떻게 하면 싱글톤을 안쓰고 문제를 해결할 수 있을까?"에 초점을 맞추는 것이 싱글톤을 이해하는 좋은 방향성이라 생각됩니다.  목적싱글톤은 '오직 1개의 인스턴스만 갖도록 보장'한다는 점과 '전역 접근을 제공'한다는 점 총 2개의 문제를 ..

    Unity MVP 패턴

    목차MV + * 패턴MVP in UnityMV + Reactive Presenter정리 MV + * 패턴개발을 하면서 조금 더 구조화된 환경, 유연하며 협업에도 도움이 되는 환경을 모두 원할 것입니다. MVC, MVP, MVVM 패턴을 찾아보며 '실제로 개발하면서 어떻게 패턴을 적용할까?'에 대한 정리입니다. Unity에 적합한 MV + * 패턴 Unity에 경우 자체적으로 MVVM에 필수적인 *데이터 바인딩 기능을 제공하지 않고(Unity UI Toolkit으로 데이터 바인딩 지원), MVVM 패턴 설계가 복잡하다는 단점이 있습니다.View를 담당할 컴포넌트에서 버튼과 같은 입력을 처리하기에 View에서 입력을 처리하는 MVP가 더 적합하다 생각됩니다. 또한 * UniRX와 같은 라이브러리를 통해 Ob..

    MVVM 패턴

    MVVM 패턴

    목차개요Presentation ModelMVVM정리 개요Presentation Model(PM)은 2004년 Martin Fowler가 기재한 패턴입니다. 이 패턴은 View의 행동과 상태를 분리한다는 점에서 MVP와 유사하지만, Presentation Model이라 부르는 View의 추상화를 생성한다는 점에서 차이점이 있습니다.https://martinfowler.com/eaaDev/PresentationModel.html 마이크로소프트의 WPF, Silverlight 개발자인 John Gossman은 2005년 자신의 블로그에 Model-View-ViewModel 패턴을 공개했습니다. MVVM 패턴은 View의 상태와 행동을 포함하는 View의 추상화를 쓴다는 점에서 Presentation Model..

    MVP 패턴

    MVP 패턴

    목차MVP - TaligentMVP - Dolphin SmalltalkMVP - Supervising ControllerMVP - Passive ViewUI Test정리 * 작성중 알게된 포스트로 궁금했던 대부분이 써져있어서 해당 블로그를 보는걸 추천합니다.https://blog.naver.com/jukrang/221597910488 MV-Whatever 정리 - 2. MVPMVP(Model - View - Presenter)는 MVC를 재해석하며 등장했다. Controller의 자리를 Presenter...blog.naver.com  MVP- 개요MVC 패턴의 파생으로, 자동화된 유닛테스트를 용이하게 하고 프로젠테이션 로직에서 관심사를 분리하도록 설계된 사용자 인터페이스 아키텍처 패턴입니다.- MVP ..

    MVC 패턴

    MVC 패턴

    목차MVCP of EAA 속 MVCMVC 창시자의 MVC정리한계 개요이전에 프로젝트가 끝나고 잡담을 하던 중 옆에서 MV 뭐시기 패턴을 써서 협업하기 쉽게 해볼까 라는 얘기를 들은 적이 있습니다. 무슨 얘기인지 궁금해서 물어보고 당시에는 제대로 이해가 안되서 이후 MVC 패턴을 찾아보았습니다. 하지만 M, V, C간의 상호작용  내용이 미묘하게 다르게 설명하는 글이 많아 혼란스러워서 나름대로 답을 찾기 위해 패턴의 역사를 알아보려고 작성했습니다. MVC - P of EAA Model - View -Controller 아키텍처 패턴은 사용자 인터페이스 상호 작용을 세 가지 역할로 나눕니다.1970년대 후반 Trygve Reenskaug가 Smalltalk 플랫폼을 위해 개발한 프레임워크로 시작되었으며,가장..