| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- F
- ㅓ
- 옵저버 패턴
- 코틀린
- r
- Abstract Factory
- El
- 디자인패턴
- factory method
- 추상팩토리패턴
- Kotlin
- ㅋㅁ
- 싱글톤
- designPattern
- 안드로이드 디자인시스템
- Observer Pattern
- 빌터패턴
- 함수형프로그래밍
- material3
- Design Pattern
- 추상 팩토리
- 팩토리 메소드
- Singleton
- builderPattern
- android designsystem
- 디자인패턴 #
- PrototypePattern
- 프로토타입 패턴
- compose
- Functional Programming
- Today
- Total
목록분류 전체보기 (337)
오늘도 더 나은 코드를 작성하였습니까?
core:data비유: "데이터 계층의 총괄 지휘자" 또는 "앱의 최고 데이터 책임자(Chief Data Officer)"역할: 이 모듈은 앱의 데이터에 관한 모든 정책을 결정하고 실행하는 심장부입니다. '단일 진실 공급원(Single Source of Truth, SSOT)' 원칙을 구현하는 책임을 지며, 상위 계층(도메인, 기능)에 깨끗하고 일관된 데이터 API(Repository)를 제공합니다. 어떻게 지휘하는가? 데이터 동기화: core:network(레벨 1)를 호출하여 서버로부터 최신 데이터를 가져옵니다.데이터 캐싱: core:network에서 받아온 데이터를 core:database(레벨 1)를 사용하여 로컬 DB에 저장(Upsert)합니다.데이터 제공: 상위 계층에서 데이터를 요청하면, ..
레벨 1 모듈들의 공통적인 설계 철학: "기술의 캡슐화"core:database: 로컬 데이터베이스(Room) 관리.core:network: 원격 서버(API) 통신 관리.core:datastore: 사용자 설정 등 간단한 데이터(DataStore) 관리.core:notifications: 시스템 로컬 알림 생성 및 게시.core:testing: 공통 테스트 유틸리티 및 도구 제공. core:ui비유: "조립식 가구 제작소 (Pre-fabricated Furniture Workshop)"역할: 레벨 0의 core:designsystem(나사, 나무판자, 페인트)과 core:model(설계도)을 가져다가, 앱 전체에서 재사용할 수 있는 의미 있는 UI 조립품을 만듭니다. designsystem이 원자적인 ..
'Now in Android' 앱의 멀티모듈 구조는 구글의 공식 Android 앱 아키텍처 가이드를 따르고 있습니다. 이 가이드는 **클린 아키텍처(Clean Architecture)**의 원칙과 유사한 부분은 많지만, 완전히 동일하지는 않습니다.주요 차이점은 다음과 같습니다:도메인 계층(Domain Layer)의 의존성:클린 아키텍처에서는 도메인 계층(비즈니스 로직)이 다른 어떤 계층(데이터, UI 등)에도 의존하지 않고 가장 독립적이어야 합니다. (의존성 역전 원칙, DIP)**구글 공식 가이드 (Now in Android가 따르는 구조)**에서는 도메인 계층이 선택 사항이며, 존재하더라도 일반적으로 데이터 계층에 의존합니다. (UI → (선택적 도메인) → 데이터 의존성 흐름)도메인 계층의 필수 여..
kotlin In Action 2end Edition을 학습후 중요한 부분과 기억해야될 부분을 기록합니다. 1.1 코틀린 맛보기.data class Person( // 데이터 클래스 val name: String, // read only 프로퍼티 val age: Int? = null // null이 가능한 타입과 파라미터 기본값)fun main(){ // 최상위 함수 val persons = listOf( Person("영희", age= 29), // 이름 붙은 파라미터 Person("철수"), // 트레일링 콤마 ) val oldest = persons.maxBy { // 람다식 it.age ?: 0 // null값에 적용된 엘비스 연산..