달달한 스토리

728x90
반응형

출처 핀터레스트

 

데이터 형식 모델 피드백 이후 변경 사항입니다.

 

우선 blog 부분입니다.

 

기존에는 Blog라는 클래스를 두고, 

 

두 개의 클래스 DaumBlog, NaverBlog의 상속시켜 코드를 짰지만,

 

Blog 클래스 자체적인 프로퍼티인 BlogType enum 타입을 통해

 

Daum과 Naver를 구분 짓도록 변경하였습니다.

 

Blog.kt

 

import kr.loner.shared.BlogType

/*
* 블로그 데이터 클래스입니다.
* id : 고유값
* title : 블로그의 타이틀명입니다.
* info : 블로그에 대한 설명글 입니다.
* img : view의 표시될 하나의 이미지입니다.
* blogUrl : 아이템을 눌렀을 때, 웹뷰로 전달할 url입니다.
* type : blog의 종류를 결정하는 타입 값입니다. (enum)
* */
data class Blog(
    val id: Long,
    val title: String?,
    val info: String?,
    val img: String?,
    val blogUrl: String?,
    val type: BlogType
)

 

BlogType

 

enum class BlogType {
    Naver,
    Daum
}

 

 

다음은 User 입니다.

 

User 클래스 역시 UserType으로 구글과 카카오 유저를

 

구분할 수 있게 수정하였습니다.

 

User.kt

 

import kr.loner.shared.UserType
import kr.loner.shared.model.sooyeol.blog.Blog
import kr.loner.shared.model.sooyeol.place.GoodPlace

/*
* 유저 추상 클래스입니다.
* id: 고유값,
* name: 사용자 이름 (기획에서는 이름의 필요성이 언급되진 않았지만, 혹시 몰라 넣어보았습니다!)
* myGoodPlaces : 사용자가 등록해 놓은 맛집의 리스트입니다.
* wishList : 사용자의 블로그 목록입니다.
* type : 카카오와 구글 로그인의 구분을 짓는 타입입니다.
* */

data class User(
    val id: Long,
    val name: String,
    val myGoodPlaces: List<GoodPlace>,
    val wishList: List<Blog>,
    val type: UserType
)

 

UserType

 

enum class UserType {
    Google,
    Kakao
}

 

마지막으로 맛집은 클래스가 아닌 인터페이스를 사용했습니다.

 

맛집보다는 상위 표현인 장소가 어울리다는 의견이 있었고,

 

Place로 명명하고, 추후에 장소와 관련하여 범용적으로

 

여러 장소가 모델로 쓰일 가능성을 미루어 보아 Place라는 인터페이스를 구축하였고,

 

이 Place를 구현한 맛집 클래스인 GoodPlace의 코드입니다.

 

Place.kt

 

/*
* 장소 기본 데이터 인터페이스입니다.
* id : 고유값
* latitude : 장소의 위도입니다.
* longitude : 장소의 경도입니다.
* */
interface Place {
    val id: Long
    val latitude: String?
    val longitude: String?
}

 

GoodPlace.kt

 

/*
* 사용자의 맛집 모델입니다.
* id, name, info : GoodPlaceData interface에 설명이 표기되어 있습니다.
* name : 맛집의 이름입니다.
* info : 맛집에 대한 설명글 입니다.
* imgs : 등록해놓은 맛집의 이미지 리스트입니다.
* starPoint : 맛집의 평가 별점입니다. ex) 1 -> 1점, 5 -> 5점
* date : 맛집을 등록한 날짜입니다.
* phoneNum : 맛집의 전화번호입니다.
* address : 맛집의 주소입니다.
* */
data class GoodPlace(
    override val id: Long,
    override val latitude: String?,
    override val longitude: String?,
    val name: String?,
    val info: String?,
    val imgs: List<String?>,
    val rating: Double?,
    val date: String?,
    val phoneNum: String?,
    val address: String?
) : Place
728x90
반응형

공유하기

facebook twitter kakaoTalk kakaostory naver band
loading