Programming
-
[아키텍처] MVP Pattern의 이해Programming/Android 2020. 9. 1. 02:36
MVC 패턴 단점 MVC 패턴은 UI와 비즈니스 로직이 분리되지 않아 액티비티(컨트롤러)가 방대해진다. 컨트롤러는 뷰와 모델에 의존적이고 뷰는 모델에 의존적이라 결합도가 높아 유닛테스트가 거의 불가능하다. 궁극적으로 유지보수비가 증가하고 생산성이 저하되는 것이다. MVP 패턴은 UI와 비즈니스 로직을 분리시키는데 초점을 둔다. 뷰는 사용자에게 화면을 보여주고, 사용자는 뷰와 상호작용한다. 뷰는 사용자 이벤트를 프레젠터에게 전달하고, 프레젠터는 데이터(모델)를 업데이트(저장/수정/삭제)한다. 프레젠터는 변경된 모델(데이터를) 가져와서 UI를 업데이트(화면 갱신) 한다. 장점 프레젠터는 뷰와 모델의 인스턴스를 가지며 이 둘을 연결해 주는 역할을 하므로 Presenter와 View는 1:1 관게를 갖는다. 따..
-
[RxJava] 1. Observer Pattern에 대한 이해Programming/RxJava 2020. 8. 16. 19:46
Observer Pattern (관찰자 패턴) 옵서버 패턴(observer pattern)은 객체의 상태 변화를 관찰하는 관찰자들, 즉 옵저버들의 목록을 객체에 등록하여 상태 변화가 있을 때마다 메서드 등을 통해 객체가 직접 목록의 각 옵저버에게 통지하도록 하는 디자인 패턴이다. 주로 분산 이벤트 핸들링 시스템을 구현하는 데 사용된다. Instance observer/subscriber Observable Observable(옵저버블)은 이벤트를 만들어내는(emit) 주체 이벤트 스트림을 통해 만든 이벤트를 내보낸다. (0 개부터 여러 개의 이벤트를 내보내는 것이 가능) Observer Observer(옵저버)는 Observable에서 만들어진 이벤트에 반응(react)하며, 이벤트를 받았을 때 수행할 ..
-
[RxJava] 넷플릭스가 만든 라이브러리, RxJavaProgramming/RxJava 2020. 8. 16. 14:18
Reactive Extentions(ReactiveX) ReactiveX는 이벤트 기반 비동기 프로그래밍을 위한 라이브러리이다. 콜백 방식과 달리, 발생하는 이벤트를 이벤트 스트림에 전달하고, 이벤트 스트림을 관찰하다가 원하는 이벤트를 감지하면 이에 따른 동작을 수행하는 방식 RxJava란 무엇인가? RxJava는 넷플릭스에서 만든 Reactive Programming 라이브러리다. ReactiveX 라이브러리의 JVM 구현체. ReactiveX 라이브러리에서 제공하는 기능들을 안드로이드를 포함한 모든 자바 기반 플랫폼에서 사용할 수 있도록 한 것이다. RxJava는 함수형 프로그래밍이다. Java는 함수형 언어가 아니므로 RxJava 라이브러리는 순수 함수로 작성된 리액티브 연산자를 제공한다. 리액티브..
-
[Android] ViewHolderProgramming/Android 2020. 8. 14. 17:43
ViewHolder란 View를 보관하는 객체이다. ListView와 RecyclerView는 inflate를 최소화하기 위해 View를 재활용 한다. 이 때, 각 뷰의 내용을 업데이트 하기 위해 findViewById를 매번 호출 해야한다. 이로 인해 성능저하가 일어남에 따라 ItemView의 각 요소를 바로 엑세스 할 수 있도록, 저장해두고 사용하기 위한 객체이다. 성능 향상을 위한 방법론이다. 각 아이템이 보여질 때마다 inflate되는 것을 최소화하여 성능을 높이기 위해 ViewHolder에 View를 저장하여 사용한다. ※ inflate? : xml 기술된 View의 정의를 실제 VIew 객체로 만드는 것(메모리에 올리는 것)을 말함. ListView에서 ViewHolder getView()에서..
-
안드로이드 빌드 도구, GradleProgramming/Android 2020. 8. 12. 21:04
Gradle이란 빌드도구이다. 안드로이드 스튜디오(IDE)와 Gradle(빌드도구)는 독립적이다. => Sync(동기화)작업을 수행해야한다. 안드로이드 스튜디오는 IDE와 빌드도구가 분리되어 있어 프로젝트를 보다 깔끔하게 관리가 가능하다. build.gradle 파일 모듈의 빌드 방법을 정의한 빌드스크립트 파일이다. Gadle은 Android 앱이나 라이브러리를 컴파일, 빌드 및 패키징하기 위한 유연한 방법을 제공한다. apply plugin: 'com.android.application' 안드로이드 플러그인 사용을 gradle에 적용하는 것. android [...} 안드로이드와 관련된 빌드 설정을 세팅하는 블럭 compileSdkVersion, buildToolsVersion compileSdkVer..
-
[Kotlin] 접근제한자Programming/Kotlin 2020. 7. 31. 21:00
public 어디에서나 사용 가능 private 해당 .kt 내부에서만 사용 가능 internal 같은 모듈 내에서 사용 가능 protected 상속받은 클래스 내에서만 사용 가능 안드로이드 스튜디오의 프로젝트는 app모듈을 기본 제공해 여기서 앱을 만듭니다. 보통은 기본 app 모듈만 사용하지만 사실 여러 모듈을 생성할 수 있습니다. 예를 들어 같은 프로젝트에 스마트폰용, 시계용, TV용 안드로이드 앱을 만든다면 모듈 3개를 생성합니다. internal은 이 모듈 간 접근을 제한하는 키워드입니다. 실제로 코틀린으로 internal이나 public으로 작성한 클래스는 자바로 변환된 바이트코드를 보면 똑같이 public 접근제어자를 가지는 것을 볼 수 있었다. 패키지 스코프와 클래스 스코프가 있다. 출처:..
-
[Kotlin] NullProgramming/Kotlin 2020. 7. 15. 20:56
코틀린 변수 선언은 기본적으로 Null을 허용하지 않는다. var a: Int = 30 var b: String = "Hello" null 가능한 선언 val a: Int? = null val b: String? = null 세이프 콜(?.)과 non-null 단정 기호(!!.)를 활용 세이프 콜 : null이 할당되어 있을 가능성이 있는 변수를 검사하여 안전하게 호출하도록 도와주는 연산자로 사용할 변수 이름 뒤에 ?.를 작성하면 됨. println("str1: $str1 length: ${str1?.length}") // str1을 세이프 콜로 안전하게 호출 non-null 단정기호는 null이 아님을 단정하므로 컴파일러가 null검사 없이 무시한다. 따라서 null이 할 당되어 있을지라도 컴파일은 잘..
-
[Kotlin] 자료형과 변수Programming/Kotlin 2020. 7. 15. 20:24
1. 자료형과 변수 카멜 표기법 사용 val (value) - 변수의 값이 변경되지 않아야 할 경우 불변형 (immutable) var(variable) - 변수의 값이 변경되어야 할 경우 가변형 (mutable) 코틀린의 자료형은 참조 자료형 사용 Primitive Data Type은 가공되지 않은 수수한 자료형을 말하며, 프로그래밍 언어에 내장되어있다. Reference Type은 객체를 생성하고 동적 공간에 데이터를 둔 다음 이것을 참조하는 자료형을 말한다. 코틀린은 참조형만 사용하며, 참조형 변수가 JVM에 실행하기 위해 코틀린 컴파일러에서 기본형으로 대체된다. 2. 변수 선언의 예시 val name: String = 'Kildong' val name2 = 'Hello'; 변수를 선언과 동시에 할..