본문 바로가기

안드로이드/디자인패턴

(7)
Data Layer DataSource네트워크, 로컬 DB, 파일, 메모리 등에서 데이터를 제공한다.데이터와 직접적인 연관이 있는 클래스이기 때문에 해당 클래스에서는 CRUD의 기능만 담당한다. DataSource 클래스에서는 하나의 데이터 저장소만 사용해야 한다.예를 들어, 네트워크 통신 DataSource에는 네트워크 통신과 관련 된 기능만 존재해야 한다.class NewsRemoteDataSource( private val newsApi: NewsApi, private val ioDispatcher: CoroutineDispatcher) { /** * Fetches the latest news from the network and returns the result. * This executes ..
SOILD 원칙 1. 단일 책임 원칙 (SRP)각 클래스는 하나의 책임만 갖고 있어야 한다.책임 별로 클래스를 분리함으로써 각 책임에 변경사항이 발생될 때만 해당 클래스만 변경하면 된다. 적용 전class 회사{ fun 영업(){...} fun 개발(){...} fun 인사(){...}} 적용 후class 영업{ fun 업무(){...}}class 개발{ fun 업무(){...}}class 인사{ fun 업무(){...}} 안드로이드에서의 SRP1. ViewModel은 UI 데이터 상태를 관리하는 역할로만 사용한다. 2. 개방 폐쇄 원칙 (OCP)확장에는 열려있고, 변경에는 닫혀 있어야 한다.하나의 기능을 갖고 있지만 여러가지 경우에 따라 작업이 달라지는 경우라면 메서드가 복잡해지거나, ..
SingleTon Singleton Pattern오직 하나의 인스턴스만 제공하는 클래스 Why?하나의 클래스를 여러 곳에서 사용하다보면 불필요하게 여러 개의 동일한 클래스가 생성되어 메모리 낭비가 일어날 수 있다.또는 setting과 같이 인스턴스가 하나여야만 하는 클래스가 있을 수 있다. 따라서 어디서 사용되어도 동일한 기능을 제공하는 클래스라면 불필요하게 여러 개의 인스턴스를 생성할 필요 없이 하나의 인스턴스만 제공하면 효율적으로 메모리를 사용할 수 있게 된다.class Test{ companion object { private var instance: Test? = null fun getInstance(): Test{ return instance ?: Single..
함수형 프로그래밍 함수형 프로그래밍이란?자료 처리를 수학적 함수의 계산으로 취급하고 상태와 가변 데이터를 멀리하는 프로그래밍 패러다임의 하나이다.객체 지향 프로그래밍에서 객체가 1급 시민으로 분류된다면, 함수형 프로그래밍은 함수가 1급 시민으로 분류된다.1급 시민변수에 담을 수 있다.함수의 인자로 전달할 수 있다.함수의 반환값으로 전달할 수 있다.1급 함수1급 시민의 조건을 만족하면서 아래의 조건을 추가로 만족해야 한다.런타임에 생성이 가능하다.익명으로 생성이 가능하다.참고로 코틀린은 1급 함수이다.참조 투명성참조 투명성은 순수 함수의 개념과 비슷하다.순수 함수란 주어진 값에 대한 결과 값이 제공되는 함수다. 참조 투명성이란 동일한 입력 값에 대해 항상 동일한 출력 값을 보장하는 특성을 참조 투명성이라고 한다.함수가 외부..
[Java] 객체 지향 프로그래밍에 입문하는 사람 또는 Java에 입문하는 사람이라면 무조건 들어봤을 객체 지향 그럼 객체 지향은 무엇일까? 우선 객체에 대해 알아야한다. 객체객체란 사전적인 정의로 실제 존재하는 것을 말한다. 그러나 프로그래밍에서의 객체는 필드(데이터들의 집합), 메소드(함수)들의 집합이라고 보면 된다. 필드String name;Int grade; 메소드void example(){...}void example2(){...} 또한 필드와 메소드들을 담고 있는 일종의 케이스가 바로 클래스이다. 클래스public class Example { String name; int grade; void example(){...} void example2(){...}}  객체 지향의 특징1. 추상화추상화란 과정은 감추면서 결과..
[디자인 패턴] MVVM 디자인 패턴은 MVC를 시작으로 MVP을 거쳐 MVVM로 발전해왔다. 그러나 세가지 방법 모두 서로의 장단점이 있기 때문에 모두 사용되고 있으며, 프로젝트의 방향성에 맞는 디자인 패턴을 선택하여 사용하면 된다. MVVM 패턴MVVM 모델은 기존의 MVC 모델과 MVP 모델에서의 View와 Controller/Presenter 사이에서의 강한 의존성을 약화시킨 모델이다. 기존에는 Controller/Presenter에서 UI 조작이 일어났다면, MVVM 모델에서의 ViewModel은 UI를 조작하지 않는다. 대신 View에서 ViewModel을 관찰하며 UI를 업데이트를 하는데 이를 Observe라 한다. https://snaildeveloper.tistory.com/38 [안드로이드] ViewModel1..
[디자인 패턴] MVC 패턴 디자인 패턴이란? 인터넷에 검색해보면 "공통적으로 발생하는 문제에 대해 재사용이 가능한 해결책" 이라 나온다. 개발의 역사가 길지는 않지만 지금까지 개발하면서 생기는 공통적인 문제들을 쉽게 해결할 수 있도록 만든 것이 디자인 패턴이라고 생각한다. 안드로이드 디자인 패턴에는 대표적으로 MVC, MVP, MVVM가 있다. MVC 패턴이란? MVC란 Model - View - Controller 의 약자이다. Model - 데이터 View - 사용자 화면 Controller : Model 과 View를 연결해주는 관제탑 역할 MVC의 관계는 다음과 같다. Model Model은 데이터와 관련된 작업을 하는 곳 안드로이드에서는 Data Class가 Model을 담당하고 있다. View View는 사용자가 직접적..