일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- Kotlin
- 데이터베이스
- 디자인패턴
- Android
- CS지식
- github
- 스레드
- cs
- React
- OS
- reactnative
- 개발
- 리액트
- Operating System
- 프로세스
- MVVM
- 안드로이드 디자인 패턴
- db
- 디자인 패턴
- 안드로이드
- 앱 개발
- 코틀린
- 안드로이드 개발
- 앱
- Database
- 메모리
- 운영체제
- 액티비티
- 리액트네이티브
- 앱개발
- Today
- Total
목록Design Pattern (8)
Tech Log
1. Observer Pattern이란? 주체가 어떤 객체(subject)의 상태 변화를 관찰하다가, 상태 변화가 있을 때마다 메소드 등을 통해 옵저버들에게 변화를 알려주는 디자인 패턴. 주체는 객체의 상태 변화를 보고 있는 관찰자를 말한다. 옵저버들은 객체의 상태 변화에 따라 전달되는 메소드, 이벤트 등을 기반으로 추가 변화 사항이 생기는 객체들이다. 위와 같이 주체와 객체를 분리하지 않고 상태가 변경되는 객체만을 기반으로 옵저버 패턴을 적용하기도 한다. 옵저버 패턴의 원리가 적용된 서비스 중에는 트위터가 있다. 팔로워들은 주체가 새로운 트윗을 올리면 알림을 받게 된다. 2. 예시 kotlin으로 작성한 옵저버 패턴 예시는 다음과 같다. interface Observer { fun update() } ..
프로젝트를 하면서 Repository Pattern을 사용해보았고, 데이터 레이어를 분리하였을 때 다른 이점이 더 있을까 궁금하여 조사해보았다. 해당 글은 안드로이드 플랫폼을 기준으로 기술하였습니다. 1. Repository Pattern이란? 데이터 레이어를 분리하는 디자인 패턴이다. 데이터 레이어에는 네트워킹 코드, Room 데이터베이스와 같이 데이터와 관련된 코드들이 들어간다. UI 부분과는 분리되어 데이터와 비즈니스 로직이 들어간다. 안드로이드는 위 그림과 같이 Repository 패턴을 적용하고 있다. Remote Data Source와 Local Data Source를 추상화하여 중앙 집중 처리 방식을 구현하였다. 이 덕분에 데이터를 사용하는 곳(ViewModel)에서 비즈니스 로직(Repos..
1. 의존성 종속성이라고도 한다. B의 변경 사항에 대해 A 또한 변해야 한다면, A가 B에 의존성이 있다는 것이다. B가 바뀌면 A도 바뀌는 것이다. 2. 의존성 주입 위 그림처럼 메인 모듈이 직접 하위 모듈에 대한 의존성을 주는 것이 의존성 주입을 적용하지 않는 것이다. 의존성 주입을 적용한다면, 메인 모듈이 직접 의존성을 주는 것이 아니라 간접적으로 주게 된다. 중간에 의존성 주입자(dependency injector)가 의존성 주는 부분을 가로채서 메인 모듈 대신 의존성을 주입하게 된다. 그 결과 메인 모듈과 하위 모듈은 디커플링 되었다. *디커플링(decoupling) : 모듈 간 의존성을 최소화 의존성 주입 시에는 상위 모듈은 하위 모듈에서 어떠한 것도 가져오지 않아야 한다. 또한 상위 모듈과..
MVC, MVVM 패턴에 이어서, 많이 사용되는 MVP 패턴에 대해서도 공부해보고자 한다. MVP 패턴도 공부해서 이때까지 공부해본 여러 아키텍처 패턴의 특징에 맞게 프로젝트에 적용해보고 싶다. 해당 포스팅은 안드로이드 아키텍처 기준으로 작성되었습니다. 1. MVP 패턴이란? MVP 패턴은 Model, View, Presenter 이 세 가지 역할로 어플리케이션(프로그램)을 분리해놓은 것이다. MVC 패턴과는 한 가지만 다르다. MVC의 Controller 대신에 Presenter가 있다. 2. MVP 패턴의 구조 MVP 패턴은 Model, View, Presenter로 구성되어 있다. Model 프로그램에서 다루는 데이터를 가지고 있고 그 데이터를 처리하는 부분 데이터 처리하는 역할 안드로이드에서는 A..
안드로이드를 개발할 때 가장 많이 권장된다는, 구글이 권장하는.., MVVM 패턴을 공부해보고자 한다. 아키텍처 패턴이 각각의 장단점이 있지만, MVVM이 어떻길래 권장되는지 상당히 궁금했다. 해당 포스팅은 안드로이드 아키텍처 기준으로 작성되었습니다. 1. MVVM 패턴이란? MVVM 패턴은 Model, View, ViewModel로 세 가지 역할로 프로그램을 분담하여 나눈 것이다. 안드로이드에서의 MVC 패턴은 View와 Model 사이의 의존성이 높다. 그리고 MVC 패턴에서는 View와 Controller가 함께 Activity나 Fragment에 있다.... (이에 대한 자세한 예시는 추후에 MVC 패턴 예제 포스팅을 작성해볼 예정이다) 이렇게 두 모듈 간의 결합도가 높으면, 추후에 프로그램이 커..
이때까지 프로젝트를 하면서 코드가 복잡해지는 것에 대한 불편함을 느꼈다. 디자인 패턴을 적용하지 않고, UI 설정 코드와 데이터 받아오는 코드 등을 합쳐놓으니 굉장한 스파게티 코드가 된 것 같았다... 따라서 앞으로 하는 프로젝트는 모듈화와 디자인 패턴 적용에 집중해야 겠다고 생각했다. 여러 아키텍처 패턴 중 심플하다고 생각되는 MVC 패턴부터 알아보고자 한다. 해당 포스팅은 안드로이드 아키텍처 기준으로 작성되었습니다. 1. MVC 패턴이란? MVC 패턴은 애플리케이션(응용 프로그램)을 서로 다른 역할로 분리해놓은 패턴 중 하나이다. 관심사 분리(Separation of Concerns, SoC)로도 알려져 있다고 한다. 여기서 관심사 분리(separation of concerns, SoC)란? In c..
안드로이드 Room DB의 인스턴스를 생성할 때 반드시 싱글톤 패턴으로 생성했던 것 같다. 그때는 강의에서 그렇게 하라고 해서 했었는데, 다른 곳에서도 사용할 일이 있을 것 같아서 싱글톤 패턴에 대해 정리해본다. 1. 정의 위키백과에서는 다음과 같이 싱글톤 패턴을 정의하고 있다. 소프트웨어 디자인에서 싱글톤 패턴을 따르는 클래스는, 생성자가 여러 차례에 호출되더라도 실제로 생성되는 객체는 하나이고 최초 생성 이후에 호출된 생성자는 최초의 생성자가 생성한 객체를 리턴한다. 위 정의에서 알 수 있듯이, 싱글톤 패턴에서는 객체(인스턴스)를 메모리에 하나만 생성한다. 그리고 이 객체를 여러 스레드에서 동시에 어디에서든지 참조할 수 있도록 하는 것이다. 전역 범위에서 이 객체에 접근할 수 있도록 하면 어디에서든지..
소프트웨어를 설계할 때 디자인 패턴이 중요하다는 얘기를 항상 들었지만, 왜 중요한 것이고 어떨 때 쓰이는 것인지 몰랐다. 그러다가 이번에 추천 시스템 어플리케이션을 만들면서, 디자인 패턴의 중요성을 크게 깨달았다. 프로젝트 내의 파일들이 많아지고, 한 클래스 내에서 너무 많은 기능들이 담겨있다보니 파일을 찾기 힘들고, 코드의 가독성이 좋지 않았다. 또한 클래스의 재사용성과 확장성이 좋지 않겠다는 생각이 들었다. 이래서 소프트웨어 설계를 철저히 하고 디자인 패턴을 적용시키는 것이구나하고 깨달았다... 이번에 제대로 디자인 패턴을 공부해서 적용시켜보려고 한다. 1. 디자인 패턴이란? 소프트웨어 공학의 소프트웨어 설계에서 공통으로 발생하는 문제에 대해 자주 쓰이는 설계 방법을 정리한 패턴이다. 즉, 설계에서 ..