android(35)
-
Delegate Pattern
Delegate Pattern 어떤 객체가 기능을 수행할 때, 해당 기능을 다른 객체에게 위임하는 패턴 상속과의 차이 객체 안에 새로운 기능 / 객체를 구성하는 composition을 사용 프로세스 1과 2는 dependency 관계 , 2와 3은 implement관계. 2에는 1이 필요한 부분을 정의함. 3은 2를 구현함 kotlin에서 by를 사용하면 쉽게 가능 // 부동산과 관련된 권한들 interface Authority { fun stampSeal() // 도장 찍기 ... // 기타 등등 } // 부동산에 대해서 내가 행사할 수 있는 권리가 있어! class Customer(private val name: String) : Authority { // Authority 인터페이스 구현 overr..
2023.05.03 -
Kotlin Infix func
Kotlin Infix function 이란? ; 두 개의 객체 중간에 들어가게 되는 함수 형태 ex) val day2 = mapOf("Monday" to "월요일", "Tuesday" to "화요일") 개발자가 직접 정의하는 Infix func infix fun dispatcher.함수명(receiver): 리턴타입 { } 위와 같은 형태로 사용 가능. 위의 예시와 비교하자면, Monday가 Dispatcher고, 월요일이 receiver ex) infix fun String.add(other:String): String { return this + other } class내에 정의하면 dispatcher 생략 가능 class StringAcc { var data = "" infix fun add(re..
2023.05.03 -
안드로이드 아키텍쳐
패스트캠퍼스의 강의를 요약한 버전...올린다 아키텍쳐가 왜~~~중요하게 한 번만 말한다 안드로이드는 웹처럼 이슈에 대해 바로바로 대응이 안됨..큰 일 터지면 좃대는것..! 성공한 앱을 더 빨리 확장시키기위해서(모듈화, 실험 기반 시스템 필요) 더 깊은 사용자화 필요..!(유연한 구조가 필요) 나중에 바꾸려면 아주아주 많은 시행착오가 필요 → 엄청난 cost 모듈화는 가능한 빨리 해야됨…(ㅎㅎ….ㅅ ㅂ) 복잡성 제거 ; 좋은 설계를 위한 첫걸음 복잡성 → 시스템을 이해 및 수정하기 어렵게하는, 소프트웨어 구조에 관련된 모든것. (단순히 코드 줄 수를 말하는것은 아님). 변경증폭 (작은 변경인데, 다른 많은 부분을 편집해야됨) 인지적 부하 (작은 변경인데 많은 선수지식을 알아야함) 알 수 없는 무지 (작은 ..
2023.05.03 -
6 Design Patterns Every Android Developer Must Know
Singleton 오직 하나의 인스턴스만 허용함 응용프로그램의 모든 부분에서 액세스가 가능 singleton클래스는 외부 코드에 의존하지 않고, 자체 인스턴스를 생성해야함 singleton 클래스는 인스턴스가 스레드로부터 안전한지 확인해야함 키 속성을 유지하면서, 필요한 경우 쉽게 확장하거나 하위 클래스로 분류할 수 있느 방식으로 설계되어야함 lass Singleton private constructor() { companion object { private var instance: Singleton? = null fun getInstance(): Singleton { if (instance == null) { instance = Singleton() } return instance!! } } } DB나..
2023.05.03 -
Retrofit to Ktor
ktor을 써야하는 이유 💡 KMM을 사용해서 앱을 만든다고 생각해보자. ios에서는 java/android 기반인 Retrofit을 사용할 수 없다 .근데 ktor은 되는 모양…? 아래와 같이 종속성을 추가해줍시다 plugins { ... kotlin("plugin.serialization") version "1.7.10" ... } dependencies { implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.3.2") implementation("io.ktor:ktor-client-core:$ktorVersion") // CIO - for JVM and Android implementation("io.ktor:ktor-client-..
2023.05.03 -
알아두면 좋은 Kotlin extension
💡 자주 사용하는 extension들을 모아봤다 showToast() fun Context.showToast(message: String) { Toast.makeText(this, message, Toast.LENGTH_SHORT).show() } hideKeyboard() fun View.hideKeyboard() { val inputMethodManager = context.getSystemService(Activity.INPUT_METHOD_SERVICE) as InputMethodManager inputMethodManager.hideSoftInputFromWindow(windowToken, 0) } loadUrl() fun WebView.loadUrl(url: String?) { if (!url..
2023.05.03