# 디자인패턴

19개의 포스트
post-thumbnail

다시보는 디자인 패턴: Iterator

오늘은 디자인 패턴 중에 Iterator(반복자)에 대해 공부한 내용을 작성해 보려고 한다. 해당 포스팅은 "Java 언어로 배우는 디자인 패턴 입문"이라는 책을 바탕으로 작성되었다. 사실은 Gof 디자인 패턴을 보고 싶지만 아직 이해도가 부족한 관계로 입문서로 시작해

2020년 3월 22일
·
0개의 댓글
post-thumbnail

관찰자 패턴(Observer Pattern)

코드를 짜다보면 객체의 상태를 변경할 때 의존성이 있는 객체들의 상태들 까지 변경되길 바랄 때가 있다. 대부분 그렇지 않겠지만 코드를 중복해서 짜는 경우가 있다면 옵저버 패턴을 이용하면 꽤 괜찮은 코드를 짤 수 있다.다음 예제는 직원(Employee) 객체는 평가(Ra

2020년 3월 17일
·
0개의 댓글
post-thumbnail

안드로이드 아키텍처 패턴 - MVVM이 뭘까?

이전 MVC, MVP에 이어서 이번에는 MVVM 패턴에 대해 간략하게 알아보겠습니다.

2020년 3월 11일
·
0개의 댓글
post-thumbnail

안드로이드 아키텍처 패턴 - MVP가 뭘까?

MVC에 이어서 이번에는 MVP 패턴에 대해 간략하게 알아보겠습니다.

2020년 3월 10일
·
0개의 댓글
post-thumbnail

팩토리 메서드 패턴(Factory Method Pattern)

코드를 작성하다보면 일반화된 클래스의 인스턴스들의 관리가 필요할 때가 있다. 일반화된 클래스의 추가, 수정 등에 개발 리소스를 줄이고 인스턴스의 생성을 보장해줄 때 쓰인다.어떠한 행위를 하는 객체를 일반화하기 위해 인터페이스를 정의한다. 정의된 인터페이스를 만들기로 약

2020년 3월 8일
·
0개의 댓글
post-thumbnail

안드로이드 아키텍처 패턴 - MVC가 뭘까?

이번엔 아키텍쳐 디자인 패턴을 말할때 가장 많이 쓰이면서 기본이 되는 MVC에 대해 간략하게 설명 해보려 합니다. 경험상 제가 막 개발자 커리어를 시작한때에도 스타트업에 안드로이드 개발자 포지션으로 면접을 보러 가면 90%정도는 아키텍쳐 패턴에 대해 질문을 했습니다.

2020년 3월 8일
·
0개의 댓글

템플릿 메서드 패턴(TemplateMethodPattern)

'어떠한 행위' 앞, 뒤 혹은 중간중간에 반복적으로 수행하는 코드들이 존재한다. 그 코드들을 일반화한다. 부모클래스에서 반복적으로 하는 일들을 정의하고 파생클래스에서 '어떠한 행위'를 정의하는 것을 약속한다. 주로 라이브러리를 만들 때 자주 사용하는 패턴이다.

2020년 3월 7일
·
0개의 댓글
post-thumbnail

단일체 패턴(Singleton Pattern)

코드를 짜다보면 클래스 인스턴스가 프로젝트에서 단 한번만 생성되기를 바랄 때가 있다.다음예제는 text 파일을 출력하는 TextController라는 싱글 인스턴스가 있고 해당 인스턴스가 가지고 있는 자료구조(queue)에 멀티 쓰레드 환경(Parallel)에서 아이

2020년 2월 25일
·
0개의 댓글
post-thumbnail

전략 패턴(StrategyPattern)

비용이 적게 드는 방향으로 빠르게 개발하게 되면 효율적으로 코드를 짜기 어렵다내 개발 비용과 컴퓨터의 비용은 반비례하는 것 같다. 알고리즘이 그렇다.어떠한 목록(list)에서 연산을 하는 함수를 만든다고 가정할 때 내 개발 비용이 적게 들기 위해 최악의 알고리즘으로 짜

2020년 2월 24일
·
0개의 댓글

팩토리 메서드(Factory Method)

팩토리 메서드 패턴은 실제 객체생성을 사용하는 클래스에서 하지않고 다른클래스에 위임하는 패턴을 말한다. 클래스의 결합도라는게 크면 한가지 변경이 다른 변경을 필요로 한다. 그래서 new를 사용을 담당하는 서브 클래스를 만들어서 Value Object를 생성(new)하는 역할을 하고 필요로 하는데다가 던져주겠다는 개발패턴이 팩토리 메서드라고 이해했다. ...

2020년 1월 31일
·
0개의 댓글

Decorator Pattern :: 데코레이터 패턴

데코레이터 패턴은 프록시 패턴과 구현 방식이 같다. 다만, 프록시 패턴은 클라이언트가 최종적으로 돌려 받는 return 값을 조작하지 않고 그대로 전달하면 반면, 데코레이터 패턴은 클라이언트가 받은 return 값에 장식을 더한다. 프록시 패턴과 데코레이터 패턴 비교 프록시 패턴 제어의 흐름을 변경하거나 별도의 로직 처리 목적 클라이언트가 받는 retur...

2020년 1월 30일
·
0개의 댓글

빌더(builder)

디자인 패턴은 너무 어렵다. 빌더패턴은 아쉽게도 개발자 경력이 길지않아 실무에서 만들어본적 없는 패턴이다. director가 가지고 있는 builder 추상클래스를 가지고 여러가지 방법으로 Construct() 하여 결과까지 내는 패턴이라고 참고교재에서는 표현하고 있다. 결과로는 추상클래스 모양을 지키는 여러개의 복합객체를 일정한 단계를 거치면서 생성해...

2020년 1월 29일
·
0개의 댓글

싱글톤(singleton)

어렵다. 본인을 개발자라고 하기에는 실력부족을 항상 느끼고 있고 기억력도 감퇴하고 있는 상황에서 조금씩 정리하면서 기억에 접점을 만들면서 공부해아함을 느끼고 있다. 실글톤은 공통목적으로 많이 사용했다. Old Style로 공통 자바파일 하나에 수많은 함수들이 들어가야할 경우 싱글톤으로 객체를 뺄수있도록 내부 인스턴스변수를 생성하였고 getInstance ...

2020년 1월 28일
·
0개의 댓글

[ObjectAid] - Eclipse 에서 UML 작성

이클립스에서 자바 디자인 패턴을 공부하던 도중 UML 작성을 하고싶었는데 찾아보니 아래와 같이 설치할수 있는 프로그램이 있어서 기록해봅니다. 기존 클래스를 UML로 변경하는데 편한 툴인거 같습니다. https://www.objectaid.com/download 사이트에 들어가서 URL을 가져온 다음 이클립스에서 설치하면 됩니다. image.png ADDO...

2020년 1월 23일
·
0개의 댓글

MVC패턴 - FE study1

1. 개념 MVC패턴 : 디자인패턴 중 하나이고 Model View Controller의 약자이다. 디자인패턴 : 바퀴를 다시 발명하지마라! - 소프트웨어를 설계할 때 문제를 해결함에 있어 재사용할 할 수있는 훌륭한 해결책. 쉽게 사용가능한 라이브러리나 프레임워크도 여기에 해당. 2. MVC 패턴 image.png 쉽게 말해서 Model은 data를...

2020년 1월 9일
·
0개의 댓글

GOF 디자인패턴 #4 Factory Method

Factory Method 생성 패턴의 한 종류, 가상 생성자 (Virtual Constructor)라고도 한다. 사용 의도 객체를 생성하기 위해 인터페이스를 정의하지만, 어떤 클래스의 인터페이스를 생성할지에 대한 결정은 서브클래스가 내리도록 한다. (어떤 타입의 객체가 생성 될지를 서브클래스가 결정함) 구체적 상황 문제 상황 물류 관리 앱을 만들고...

2019년 7월 22일
·
0개의 댓글

GOF 디자인패턴 #3 Builder

Builder 빌더, 생성 패턴 중 하나 사용 의도 복잡한 객체를 생성하는 방법과 표현하는 방법을 정의하는 클래스를 별도로 분리해서 서로 다른 표현이라도 생성할 수 있는 동일한 절차를 제공할 수 있도록 한다. 복잡한 객체를 단계별로 구성할 수 있도록 한다. 구체적 예시 문제 상황 복잡하게 많은 것을 요구하는 객체를 생각해보면, 이 객체를 만들어낼 때는...

2019년 7월 19일
·
0개의 댓글

GOF 디자인패턴 #2 Abstract Factory

Abstract Factory 추상 팩토리, Kit 이라고도 불린다. 사용 의도 상세화된 서브클래스를 정의하지 않고도 서로 관련성이 있거나 독립적인 여러 객체의 군을 생성하기 위한 인터페이스를 제공한다. 사용 동기 응용 프로그램이 서로 다른 모습인 것과 상관 없이 이식성을 갖기 위해서는 응용 프로그램이 각 사용자 인터페이스에서 제공하는 위젯을 직접 사용...

2019년 7월 19일
·
0개의 댓글

GOF 디자인패턴 #1

배경지식 Interface 객체의 인터페이스는 객체의 operation으로 이루어져있다. 인터페이스는 객체의 operation에 의해 정의된 모든 시그니처의 모음이고, 객체가 응답할 수 있는 모든 요청을 설명한다. Implementation / Encapsulation 깔끔하게 interface와 implementation을 분리하려면 impleme...

2019년 6월 15일
·
0개의 댓글