본문 바로가기

분류 전체보기

(32)
Object expressions and declarations (객체 표현식과 선언식) 출처 https://kotlinlang.org/docs/object-declarations.html#using-anonymous-objects-as-return-and-value-types 코틀린의 object와 companion object를 공부하기 위해서 공식문서의 글을 보고 해석 및 의역후 정리한 내용이다. 만약 공식문서를 참조하면서 공부한다면 매우 요긴하게 읽을 수 있을 것이다. Object expressions and declarations Sometimes you need to create an object that is a slight modification of some class, without explicitly declaring a new subclass for it. Kotlin ..
리스코프 치환원칙 리스코프 치환 원칙(Liskov subsititon Principle) public class Dog extends Animal{ @Override public void speak() { System.out.println("멍멍!!"); } } 정의 자식 클래스는 최소한 자신의 부모 클래스에서 가능한 행위는 수행이 보장되야 한다. 다르게 말해서는.. 다형성의 특징을 이용하기 위해 상위 클래스 타입으로 객체를 선언하여 하위 클래스의 인스턴스를 받으면, 업캐시팅된 상태에서 부모 메소드를 사용해도 동작이 의도대로만 흘러가도록 구성해야 한다는 것이다. 자바에서 개발하다보면 아래와 같은 코드를 매우 많이 봤을 것이다. List tmp = new ArrayList(); List 는 인터페이스이고 ArrayList는..
Handler, Looper 핸들러와 루퍼의 의미 뭐하는 애일까? 서브 스레드에서 UI 관련 작업을 할 수 있도록 도와주는 클래스다. 안드로이드에서 ui관련 작업은 메인스레드에서만 가능하다. 스레드간의 동시성 문제 때문에 ui관련 작업에 한해서는 그렇게 하기로 정했다. 서브스레드에는 TextView에서 '로딩중' 이라는 글자를 입력하려고 하고 메인 스레드에서는 '로딩 완료!' 라는 텍스트를 입력하려고 한다고 생각한다면 그냥 마지막에 실행되는 스레드가 뭐냐에 따라서 보여지는 결과가 다를 것이다. 이런 혼돈을 막고자 메인 스레드에서만 ui 관련 작업을 할 수 있도록 설정했다. 핸들러를 사용해서 메세지를 전송하고 Message를 처리할 수 있다. 토막상식 : 스레드끼리는 메세지를 통해서 의사소통을 한다. 워커 스레드가 메인 스레드에게 메세지를 던지면 이를 수..
의존성 주입(Dependency Injection) 코틀린 (안드로이드 공식문서를 참고하고 작성한 글입니다. 코틀린으로 설명되어 있어서 작성해봅니다.) https://developer.android.com/training/dependency-injection 의존성 주입이란? 하나의 객체가 다른 객체에 의존성을 제공해주는 기술을 의미한다. 의존성 주입 장점 의존성 주입을 하면 아래와 같은 이점이 존재한다. 코드 재활용 리팩토링하기 편함 테스팅 하기 편함 의존성 주입 방법 의존성 주입은 두가지가 존재한다. 생성자에 의한 의존성 주입 멤버변수에 의한 의존성 주입 하나씩 알아보기로 하고 일단 의존성 주입이 되지 않은 코드부터 한번 살펴보자. 공식문서를 읽다가 느낀건데 의존성 주입을 하지 않은 것은 객체간의 결합도가 높은 것과 같다. 일단 의존성 주입이 되지 않은 코드..
의존성 역전의 원칙(DIP, Dependency Inversion Principle) 상위 계층(정책 결정)이 하위 계층(세부 사항)에 의존하는 전통적인 의존관계를 반전(역전)시킴으로써 상위 계층이 하위 계층의 구현으로부터 독립되게 할 수 있다. public class CheeseBun extends Bun{ } public class EggBun implements Bun2{ } 이 원칙은 다음과 같은 내용을 담고 있다.[1] 첫째, 상위 모듈은 하위 모듈에 의존해서는 안된다. 상위 모듈과 하위 모듈 모두 추상화에 의존해야 한다. 둘째, 추상화는 세부 사항에 의존해서는 안된다. 세부사항이 추상화에 의존해야 한다. 이 원칙은 '상위와 하위 객체 모두가 동일한 추상화에 의존해야 한다'는 객체 지향적 설계의 대원칙을 제공한다.[2] 위키백과 中에서.. 나는 DIP 공부를 끝내고 나서 DIP의..
Handler, Looper, Message Handler 뭐하는 애일까? 서브 스레드에서 UI 관련 작업을 할 수 있도록 도와주는 클래스다. 안드로이드에서 ui관련 작업은 메인스레드에서만 가능하다. 스레드간의 동시성 문제 때문에 ui관련 작업에 한해서는 그렇게 하기로 정했다. 서브스레드에는 TextView에서 '로딩중' 이라는 글자를 입력하려고 하고 메인 스레드에서는 '로딩 완료!' 라는 텍스트를 입력하려고 한다고 생각한다면 그냥 마지막에 실행되는 스레드가 뭐냐에 따라서 보여지는 결과가 다를 것이다. 이런 혼돈을 막고자 메인 스레드에서만 ui 관련 작업을 할 수 있도록 설정했다. 핸들러를 사용해서 메세지를 전송하고 Message를 처리할 수 있다. 토막상식 : 스레드끼리는 메세지를 통해서 의사소통을 한다. 워커 스레드가 메인 스레드에게 메세지를 ..
안드로이드 Repository, Data Layer 디자인 패턴 Repopsitory 패턴 Repository 패턴은 앱으로부터 데이터 계층을 분리시켜주는 디자인 패턴이다. (여러 블로그에서 캡슐화 시켜준다고도 표현했다.) 데이터 레이어는 UI와 별도로 앱의 데이터와 비즈니스 로직을 처리하는 앱 부분을 나타낸다. 데이터에 접근할 수 있도록 일관된 API를 제공해준다. UI가 사용자에게 정보를 제공하는 동안 데이터 레이어에는 네트워킹 코드, Room DB, 오류처리, 데이터를 조작하는 등의 코드가 포함된다. 저장소는 데이터 소스(예: 영구 모델, 웹 서비스, 캐시) 간의 충돌을 해결하고 이 데이터의 변경사항을 중앙 집중화할 수 있다. repository 를 구현하기 위해서는 ViedeoRepository와 같은 분리된 클래스를 사용하한다. repository 클래스는 ..
Dependncy injection 참조한 글은 안드로이드 공식문서 입니다. https://developer.android.com/training/dependency-injection Android의 종속 항목 삽입 | Android 개발자 | Android Developers Android의 종속 항목 삽입 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. 종속 항목 삽입(DI)은 프로그래밍에 널리 사용되는 기법으로, Android 개발에 적합합니 developer.android.com 의존성 주입을 하면 아래와 같은 이점이 존재한다. 코드 재활용 리팩토링하기 편함 테스팅 하기 편함 안드로이드에서 의존성 주입을 하기 이전에 이 섹션에서는 근본적으로 의존성 주입이 뭔지 개략적으로 설명해준다. (고마워라.. 근데..