본문 바로가기

디자인 패턴6

[GoF Design Pattern] 2. 옵저버(Obsever) 패턴 [GoF Design Pattern] 2. 옵저버(Obserer) 패턴 주제(Subject)를 구독하는 관찰자(Observer) 패턴. 여러 컴포넌트가 같은 주제를 구독하고 주제의 정보가 변경될 때, 각 컴포넌트는 즉각 업데이트를 받도록 한다. 주제(Subject)는 자신을 구독하고 있는 옵저버(Observer)들을 관리하고 옵저버는 주제에 의존적이다. 예를 들어 하나의 데이터 소스(날씨 서버)가 있고 여러 종류의 UI 화면이 날씨 정보를 갱신받아 업데이트한다고 할 때, 옵저버 패턴을 적용할 수 있겠다. 옵저버 패턴은 구조가 매우 간단하고 이해하기도 편한 패턴이다. 쉽지만 여러 가지 중요한 디자인 원칙을 내포하고 있기 때문에 잘 공부해 두면 좋다. -> 개방-폐쇄 원칙(OCP) , 느슨한 결합(Loose.. 2023. 5. 29.
[GoF Design Pattern] 1. 전략(Strategy) 패턴 [GoF Design Pattern] 1. 전략(Strategy) 패턴 흔히 디자인 패턴이라고 말하면, GoF(Gang of Four)라 불리는 소프트웨어 공학자 4명이 구체화한 23개의 디자인 패턴을 말한다. 디자인 패턴은 모듈 단위가 아닌 클래스 레벨에서 설계를 하는 기교이며 다음과 같이 목적(클래스, 객체), 범위(생성, 구조, 행위)에 따라 구분하기도 한다. 생성 패턴(Creational Pattern) : 객체를 생성하는 방법에 대한 패턴들이다. 생성 로직을 숨기면서, 사용 목적에 따라 어떻게 객체를 생성할 지에 대한 유연성을 제공한다. 특히 객체의 생성과 조합을 캡슐화하여 객체의 생성 또는 변경과정에서 프로그램 구조가 영향받지 않도록한다. ex) 팩토리 메서드(Factory Method) 패.. 2023. 5. 14.
[Clean Code] 1. 의미있는 이름과 함수 Clean Code 1 . 의미 있는 이름과 함수 이직 후 생각보다 큰 규모의 프로젝트를 담당하다 보니, 학부 때는 정말 그 의미가 크게 와닿지 않았던 것들이 이제야 왜 중요한지 알게 되어가는 중이다. 알게 되어간다는 말도 오만한 표현일 것 같을 정도로 생각보다 정말 많이 중요하더라. 특히 아키텍처와 패턴을 다루기 이전, [코드] 라는 것은 개발자 간 일종의 대화로도 볼 수 있다. 코드를 명료하게 표현하지 못한다면 대화를 못하는 개발자라 할 수 있다. 때문에 먼저 클린한 코드란 무엇인가부터 공부하고자 한다. (패턴에 대해, 아키텍처에 대해 수많은 임시 저장 글들이 있지만, 클린코드부터가 역시 순서상 맞는 것 같다) 사실 책은 입사 초에 읽었지만 정리가 귀찮았는데, 프로젝트가 조금 여유가 생겨 정리하면서 .. 2023. 2. 26.
[Pattern] Android의 설계 패턴 2 : MVP by Java [Pattern] Android의 설계 패턴 2 : MVP by Java 안드로이드에서의 MVC를 살펴보았으니, 이제 MVP를 살펴볼 차례이다. Eric Maxwell 선생님께서는 안드로이드에서 어떻게 MVP를 활용하는지 역시 TicTacToe 예제를 통해 보여주셨다. 대단하신 분이다. 우선 MVP가 무엇인지부터 살펴보고 가자. MVP는 모델(Model)-뷰(View)-프레젠터(Presenter)라는 책임 집합으로 나뉘는 설계 패턴이다. https://github.com/ericmaxwell2003/ticTacToe GitHub - ericmaxwell2003/ticTacToe: A simple tic tac toe app, to illustrate the use of MVC, MVP, and MVVM .. 2022. 4. 17.
[Pattern] Android의 설계 패턴 1 : MVC by Java [Pattern] Android의 설계 패턴 1 - MVC Eric Maxwell 선생님께서 작성하신 안드로이드의 패턴 간단 정리를 통해 그동안 머릿속에 있던 안드로이드 설계 패턴에 대한 파편화된 기억을 모아보고자 한다. 안드로이드에서 쓰이는 패턴은 크게 MVC, MVP, MVVM이 있지만 각기 장/단점이 있고, 늘 엔지니어들 사이에서 무엇이 나은가에 대한 논의는 계속해서 이루어지고 있다. 최근(2017 이후)에 이르러서는 구글이 제시하는 Jetpack을 통한 설계로 중간~대규모 프로젝트에는 거의 MVVM가 많이 쓰인다. 그렇다고 MVVM이 최고로 좋다!는 아니고 어떤 경우는 MVC, MVP가 좋을 때도 있다. 그리고 왜 MVVM 으로 귀결되는 추세를 보이는지 더 잘 알기위해선 MVC, MVP에 대해 당.. 2022. 4. 1.
[Pattern] 옵저버 패턴 (Observer Pattern) by Kotlin [Pattern] 옵저버(Observer) 패턴 굉장히 유명한 디자인 패턴이다. 꼭 알고 넘어가야한다. 이벤트를 관찰하는 패턴 옵저버 패턴은 한 클래스가 다른 클래스의 상태 변화를 관찰(Observe)하고자 할 때 구현하는 패턴이다. 예를 들어 클래스 A가 클래스 B를 인스턴스화 한 객체를 가지고 있고, 이 객체의 상태변화(Event)를 감지하여 그 데이터를 활용하고자 할 때 쓰인다. 이때 A클래스는 옵저버가 되기위해 옵저버를 구현(implement)하고, 그 옵저버는 B클래스에 등록(register)이 되어있어야 상태변화의 전달이 가능하다. Java의 Swing 라이브러리나 안드로이드를 사용해 봤다면 다양한 영역에서 이벤트 리스너를 사용해 보았을 것이다. 이것이 대표적 사례로 거의 모든 GUI 툴킷에 .. 2022. 3. 28.