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


이런식으로