1. 커먼 main을 순수 데이터 계약의 인터페이스로 잡으셈. 이 경우에 게이트웨이 패턴의 응용이라 생각해라
interface IEntity{
~필요 데이터
}
2.이제 플랫폼 별 모델이 공통 인터페이스를 구현함
data class AndroidEntity{
~플랫폼 종속적 데이터
}
data class JVMEntity{
~플랫폼 종속적 데이터
}
대강 이런 느낌인데
안드로이드 프레임워크에 종속적인 어노테이션 넣을거고
jvm 모델에는 특화된 로직이나 변환 함수 넣겠지
그럼 핵심 문제의 한가지만 남음. 문제가 가장 단순해짐.
구현을 어떻게 전달하느냐? 플랫폼 모델과 공통 모델을 상호 변환하는 번역의 문제. 즉
전달 문제임
이 공통로직을 전달하는걸 확장함수 mapper로 전달해야함
3. 플랫폼 모델을 공통 도메인 모델로 바꾸는 과정을 mapper로 만듬
즉
fun IEntity toAndroid{
공통 도메인 모델을 플랫폼 모델로 번역
}
즉
UI->안드로이드->매퍼->IEntity->일반 로직
데이터가 공통로직으로 들어갈떄
UI->특정 플랫폼 엔터티->매퍼(.toDomain)->IEntity->로직
데이터가 로직에서 나올때는
로직->Ientity->매퍼(toAndorid)->안드로이드 엔터티->UI
이런식으로
음... 사실 코드 자체는 똑같음 안드로이드나 jvm이나. 근데 라이브러리가 빌드할 때, 안드로이드인지 jvm인지 모르면 뻑나가지고 그랬던거임
그럼 더 간단하지. expect actual 쓰면되잖아
https://www.jetbrains.com/help/kotlin-multiplatform-dev/multiplatform-expect-actual.html
expect actual 사용하고 싶은데, 라이브러리가 kmp모듈 지원안해. 그래서 모듈을 다 따로 만든거야 공통 안드 jvm으로
@프갤러1(222.108) 그럼 mapper 패턴이 맞음
ㅇㅋㅇㅋ 정말 감사
답변은 정말 감사 낼 한번 적용시켜봄