스팀 앱 - 개발: 상태를 나타내는 State<out T> 인터페이스 작성

개발: 상태를 나타내는 State 인터페이스 작성

2023. 12. 19 (화) | Written by @dorian-mobileapp

시작하며...

개발하면서 가장 경계해야 하는 것은 비슷비슷한 클래스들을 만드는 것이죠. MVVM 패턴을 적용하면서 뷰모델 클래스와 연관되는 상태 인터페이스들. 이들을 만들면서 이들이 비슷하다는 게 보였고, 하나의 인터페이스로 통합하는 것이 좋겠다는 생각을 했습니다. 그렇게 생각만 수개월 동안 했구요. 며칠 전에야 이 문제를 해결하고자 코딩을 시작했습니다.


State 인터페이스

여러 뷰모델들, 액티비티들에서 공용으로 사용할 State 인터페이스입니다. 화면에 보여주기 위해 필요한 데이터를 가질 T 타입만 필요한 것으로 대입하여 사용할 것입니다.

// Existing other state interfaces will be replaced with this one.
sealed interface State<out T> {
    object Empty: State<Nothing>
    object Loading: State<Nothing>
    data class Success<T>(val data: T) : State<T>
    data class Failure(val content: String): State<Nothing>
    data class Error(val throwable: Throwable): State<Nothing>
}
  • Empty: 데이터가 없고 아무 것도 하지 않은 상태
  • Loading: 데이터 로딩 중
  • Success: 데이터 로딩 성공
  • Failure : 서버가 오류(예: 오류 코드 403, 404, 500 등등..)로 응답하여 데이터 로딩 실패
  • Error: 다른 오류로 인한 데이터 로딩 실패 (예: 네트워크 미연결 등)

Layout provided by Steemit Enhancer hommage by ayogom


Posted through the ECblog app (https://blog.etain.club)
Sort:  

안녕하세요.
SteemitKorea팀에서 제공하는 'steemit-enhancer'를 사용해 주셔서 감사합니다. 개선 사항이 있으면 언제나 저에게 연락을 주시면 되고, 관심이 있으신 분들은 https://cafe.naver.com/steemitkorea/425 에서 받아보실 수 있습니다. 사용시 @응원해 가 포함이 되며, 악용시에는 모든 서비스에서 제외될 수 있음을 알려드립니다.

[광고] STEEM 개발자 커뮤니티에 참여 하시면, 다양한 혜택을 받을 수 있습니다.

Thank you, friend!
I'm @steem.history, who is steem witness.
Thank you for witnessvoting for me.
image.png
please click it!
image.png
(Go to https://steemit.com/~witnesses and type fbslo at the bottom of the page)

The weight is reduced because of the lack of Voting Power. If you vote for me as a witness, you can get my little vote.


안녕하세요.
이 글은 SteemitKorea팀(@ayogom)님께서 저자이신 @dorian-mobileapp님을 응원하는 글입니다.
소정의 보팅을 해드렸습니다 ^^ 항상 좋은글 부탁드립니다
SteemitKorea팀에서는 보다 즐거운 steemit 생활을 위해 노력하고 있습니다.
이 글은 다음날 다시 한번 포스팅을 통해 소개 될 예정입니다. 감사합니다!

Upvoted! Thank you for supporting witness @jswit.

Coin Marketplace

STEEM 0.05
TRX 0.33
JST 0.080
BTC 63435.26
ETH 1684.80
USDT 1.00
SBD 0.41