본문 바로가기

Design Pattern5

[GoF Design Pattern] 3. 데코레이터(Decorator) 패턴 [GoF Design Pattern] 3. 데코레이터(Decorator) 패턴 데코레이터 패턴은 소위 말해 객체를 장식하는 패턴이다. 객체를 장식할 때 기존 코드는 수정하지 않고, 새로운 기능을 확장할 수 있도록 돕는 패턴이다. 여기서 장식이라는 것은 어떻게 수행하는 것인지 예시를 통해 살펴보자 [헤드퍼스트 디자인 패턴] 책에서는 다음과 같은 예시를 들었다. 커피에 새로운 첨가물을 추가하여 새로운 커피를 만들어내야 한다. 이때 첨가물의 종류에 따라 커피의 가격이 달라지도록 개발해야 한다. 커피의 구성요소는 크게 [기본 커피]와 [첨가물] 이라고 하자. 기본 커피에는 다양한 첨가물이 여러 경우의 수로 추가될 수 있다. 예를 들어 Dark Roast(1달러)라는 기본 커피에 Whip(+0.3달러), Moch.. 2023. 6. 18.
[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.