반응형

개발공부/디자인패턴 6

[디자인패턴] 전략패턴 (Stratege Pattern)

전략패턴이란? 알고리즘군을 정의하고 캡슐화해서 각 알고리즘군을 수정해서 쓸 수 있게 해주는 패턴이다. 전략 패턴을 사용하면 클라이언트로부터 알고리즘을 분리해서 독립적으로 변경할 수 있다. 이게 무슨 말일까? 즉, 객체가 할 수 있는 행위들을 각 알고리즘으로 만들어놓고, 동적으로 행위의 수정이 필요한 경우 알고리즘을 바꾸는 것으로 행위를 수정하는 것이다. 전략패턴 구현 방법 전략에 대한 인터페이스를 구현한다. 전략 인터페이스를 상속받는 세부 전략 클래스를 구현한다. 다른 클래스에서 전략 인터페이스 값으로 선언하여 특정 전략을 사용할 수 있다. 참고자료 헤드퍼스트 디자인 패턴

[디자인 패턴] 상태 패턴 (State Pattern)

일을 하다가 State 어쩌고 하는 클래스가 있길래 봤는데 잘 이해가 안 갔다. 혹시나 디자인 패턴일까 찾아봤는데, 아니나 다를까 상태 패턴을 사용해서 설계한 방식이었다. 상태패턴이란? 상태 변경에 따라 객체의 행위가 달라져야 하는 상황에서 객체가 직접 상태를 체크하여 상태에 따른 행위를 호출하지 않고 상태를 객체화해서 상태가 필요한 행동할 수 있게 위임하는 디자인 패턴이다. 객체가 직접 상태를 체크해서 행위를 호출하면 뭐가 안 좋아? 코드로 보자. class Document is field state: string // … method publish() is switch (state) "draft": state = "moderation" break "moderation": if (currentUser...

옵저버 패턴(Observer Pattern) / 관찰자 디자인 패턴

옵저버 패턴이란? 옵저버 패턴은 관찰자(옵저버)가 공급자를 구독하고, 공급자에게 상태 변경이 발생할 때마다 알림을 받을 수 있는 패턴이다. 유튜브의 구독, 알림 시스템을 떠올리면 된다. 내가 한 유튜버를 구독하고 알림 설정을 하면, 유튜버가 영상을 올릴 때 알림을 받을 수 있다. 여기서 유튜버가 영상을 올리는 행위가 상태 변경이다. 새로운 영상이 나타났으니 공급자의 상태가 변경되었고, 구독자에게 알림이 간다. 옵저버 패턴을 구성하는 객체 Subject : 데이터를 관리하고 전달하는 객체 / 유튜버 Observer : Subject를 관찰하며 데이터의 변화를 전달받는 객체 / 구독자 두 객체는 1:N 관계를 맺는다. 즉, 한 개의 Subject를 1개 이상의 Observer가 구독할 수 있다. Subjec..

팩토리 메서드 패턴 (Factory Method Pattern) 설명과 예제

"찐빵님, 지금 객체 생성 함수가 세 개 있잖아요, 그거 팩토리로 바꿔서 PR 해주세요" ??? 팩토리 패턴이 뭐지??? 팩토리 패턴이 뭔지 몰라서 공부해봤다. 팩토리 메서드 패턴 조건에 따라 객체를 다르게 생성해야 할 때, 조건문을 사용해서 분기 처리를 하는데, 분기에 따른 객체의 생성을 직접 하지 않고, 팩토리 클래스에 위임해서 그 안에서 객체를 생성하도록 하는 방식이다. 객체를 찍어내는 공장이기 때문에 "팩토리"라는 이름이 붙었나 보다. 팩토리를 왜 사용할까? SNS 클래스를 만들고, 트위터, 페이스북, 인스타그램을 생성해봤다. public abstract class SNS { } public Twitter() { Console.WriteLine("Twitter"); } public Facebook..

[디자인 패턴] 객체지향의 4대 특징

객체지향이란? 객체를 만들고 조작하며 객체끼리 관계를 맺어서 다수의 객체가 함께 수행될 수 있게 하는 것 ↔ 절차 지향 언어 ex) C++, C#, Java, Python 등 절차 지향 언어 각 명령어를 작성한 순서로 실행하는 언어 ex) C언어 객체지향 언어(Object-oriented Language) 컴퓨터 프로그래밍의 한 가지 기법으로 객체를 만들고 객체를 사용하는 프로그래밍 방법 특징 프로그램에 다수의 객체를 만든다. 객체의 상호작용을 통해 프로그램을 구현한다. 객체지향 언어의 장점 재사용성 상속을 통해 프로그래밍 시 코드의 재사용을 높일 수 있다. 생산성 향상 잘 설계된 클래스를 만들어서 독립적인 객체를 사용함으로써 개발의 생산성을 향상할 수 있다. 자연적인 모델링 우리 일상생활의 모습의 구조..

MVVM 패턴이란?

디자인 패턴 개발 과정에서 발생하는 문제를 해결하기 위해 사용되는 패턴. 같은 문제에는 같은 방식의 패턴을 사용하면 된다. 문제에 맞는 디자인 패턴을 적용하는 게 중요하다. MVVM 패턴 Model(비즈니스 로직), View(UI), View Model(프레젠테이션 로직)으로 로직을 분리하는 패턴이다. 이렇게 로직을 분리하면 테스트, 유지보수, 재사용이 쉬워진다. MVVM 패턴의 구성요소 Command 패턴과 Data Binding을 통해 View와 View Model 사이의 의존성을 없앴다. ViewModel과 Model은 1:N 관계를 형성한다. Model은 ViewModel과 View를 모르고, ViewModel은 View를 모른다. View UI에 관련된 것을 다룬다. 사용자가 보는 구조, 레이아..