designPattern 6

스테이트 패턴 (State Pattern)

스테이트 패턴(State Pattern)이란? 어떠한 객체가 특정 상태에 따라 다른 행동을 해야할 때 사용할 수 있는 패턴을 스테이트 패턴(State Pattern)이라고 한다. if문이나 switch 문을 통해 객체의 상태를 객체내에서 충분히 정의할 수 있다. 다만 상태의 경우가 많아질수록 내부적으로 처리해야하는 코드가 많아지고 객체 코드가 지저분해지며 유지 보수가 점점 어려워진다. 따라서 상태를 캡슐화하여 이를 객체 단위로 유지한다. 물론 객체내 코드가 단순해지는 장점은 있지만 분명 단점이 존재한다. 상태마다 클래스를 정의해야하므로 프로젝트내 클래스가 다소 많아질 수도 있다. 이를 적절하게 사용해야 할 것이다. 코드 가독성 증가 객체내 코드 단순화 프로젝트내 객체가 많아져 관리가 어려워질 수 있음. ..

싱글톤 패턴 (Singleton Pattern)

싱글톤 패턴(Singleton Pattern)이란? 싱글톤 패턴(Singleton Pattern)의 개념은 아주 간단하다. 전체 프로그램에서 하나의 인스턴스만 유지되는 형식을 뜻한다. 장점 프로젝트 어디에서나 해당 인스턴스에 접근할 수 있다. 한 번만 인스턴스가 생성되기 때문에 메모리를 절약할 수 있다. 단점 하나의 인스턴스이기 때문에 하나의 기능이 다른 기능에 영향을 미치지 않는지 늘 고민해야한다. ( OCP에 어긋날 수 있음.) 예제 싱글톤 패턴을 사용하는 방법은 아래와 같다. static 직접 선언 Framework에서 제공하는 기능 이용 static 직접 선언 클래스 정의 싱글톤으로 생성할 클래스 내부에 정적 변수를 생성하여 유일하게 생성한 인스턴스를 반환한다. public class User {..

빌더 패턴 (Builder Pattern)

빌더 패턴(Builder Pattern)이란? 빌더 패턴(Builder Pattern)은 객체를 생성할 때 주로 사용되는 패턴이다. 어떠한 객체를 생성하고자 할 때, 객체 생성에 필요한 요소들은 Builder에 주입하고 Builder가 해당 요소를 바탕으로 객체를 생성하는 방식이다. 우리가 개발할 때 주로 사용되는 StringBuilder가 대표적인 예이다. 내용 일반적으로 객체를 생성할 때, 생성자를 이용하여 객체를 생성한다. 하지만 객체 내부 요소에 대한 접근이 어렵다면? 객체 생성시 입력된 요소에 따라 다른 의미의 객체가 생성되어야 한다면? 필요한 요소에 따라 생성자가 계속 overload 되어야 할 것이다. 이러한 문제를 빌더 패턴을 통해 해소할 수 있다. 빌더패턴을 이용하여 객체를 생성하면 아래..

파사드 패턴 (Facade Pattern)

파사드 패턴(Facade Pattern)이란? 이번엔 Facade Pattern(파사드 패턴)에 대해 정리하고자 한다. Facade의 사전적 의미는 '건물의 정면'이라는 뜻이다. 그 뜻처럼 파사드 패턴은 하나의 시스템을 건물이라 생각한다면 사용자는 건물의 정면을 바라보고 이를 제어하는 방식을 나타낸다. 구성 System 복잡한 기능과 데이터를 구성한다. Facade 객체 System을 직접 제어한다. 복잡한 기능들을 복합적으로 사용하지만 Client에게는 간단하게 기능을 제공한다. Client Facade 객체를 통해 System을 사용 및 제어한다. 특징 - 코드의 간결성 (가독성) - Client가 System을 다루기에 더욱 단순하게 사용 가능 예시 파사드 패턴의 사용을 식당의 운영에 빗대어 예시를..

MVVM 패턴 (Model - View - ViewModel)

MVVM 패턴은 처음 개발자로 입사하여 접했던 패턴이다. 개발을 처음 접했을 때는 전혀 이해가 안 되었지만 5년이 지난 지금은 가장 자신 있게 사용할 수 있는 패턴이기도 하다. 위키에서는 모델-뷰-뷰모델 - 위키백과, 우리 모두의 백과사전 모델-뷰-뷰 모델(model-view-viewmodel, MVVM)은 하나의 소프트웨어 아키텍처 패턴으로-마크업 언어 또는 GUI 코드로 구현하는-그래픽 사용자 인터페이스(뷰)의 개발을 비즈니스 로직 또는 백-엔드 로직( ko.wikipedia.org 정리 View : 사용자에게 제공되는 UI Model : 실제 데이터를 처리하는 구역 ViewModel : Model을 View에 표현하기 위한 중간 Model, View와 직접 바인딩되어 Model을 컨트롤하고 Mode..

MVC 패턴 (Model - View - Contoller)

이번에 ASP.NET을 공부하면서 MVC 패턴을 처음 접하게 되었다. 그동안 "이러한 아키텍쳐 디자인 패턴이 있다." 정도로 알고 있었으나, 이번 기회에 제대로 이해해보고자 정리했다. 위키에서는 모델-뷰-컨트롤러 - 위키백과, 우리 모두의 백과사전 모델, 뷰, 컨트롤러의 관계를 묘사하는 간단한 다이어그램. 웹 애플리케이션에서 일반적인 MVC 구성요소 다이어그램 모델-뷰-컨트롤러(model–view–controller, MVC)는 소프트웨어 공학에서 사용되는 ko.wikipedia.org 정리 - Controller : View, Model 사이에 위치하며 두 요소의 연관 관계를 조절함. - View : Model을 사용자에게 Interface하는 역할. - Model : 데이터 또는 데이터에 대한 처리를..