본문 바로가기

TIL

TIL 41일차

MVC

Activity에 Data List를 세팅 및 전달 해주고, UI Component에 값을 뿌려줬던 방식

 

MVC의 단점

  1. 복잡한 앱일수록 Activity가 수행하는 기능이 많아진다
  2. 수행하는 기능이 많아질수록 코드 수 증가 > 내가 찾고자 하는 코드를 찾기 어려움 > 유지보수 어려움
  3. 현업 시 하나의 기능을 추가 및 수정할 때 코드가 연쇄적으로 연결되어 있어 전체를 고쳐야하는 상황이 발생할 수 있다

MVVM

 

  1. View
    • Activity, Fragment, .xml와 같이 화면에 보여지는 UI
    • 텍스트 입력, 버튼 터치 등과 같은 UI Event, Action 받음
    • UI 관련 로직 수행
  2. ViewModel
    • View에 필요한 데이터를 Model로부터 가져와 가공 및 변환
    • UI와 관련된 데이터 처리
    • View가 Observe하고 있기 때문에 View가 변경된 데이터를 갱신할 수 있도록 LiveData로 변경사항 전달
    • Anti-Pattern: View의 Context를 가지고 있으면 안됨
  3. Model
    • Data와 Business Logic 담당
  4. Model
    • Data와 Business Logic을 담당
      • Data : Db, Network, File 데이터 소스

Observer Pattern

Event가 발생되면 이벤트를 관찰하던 Observer들이 바로 반응하는 패턴

사용 예시

  1. Observer interface 정의
    interface Observer {
        fun update()
    }​
  2. Observer interface를 구현한 클래스 정의
    //관찰자 1 : 강아지
    class Dog: Observer {
        override fun update() {
            println("멍멍")
        }
    }
    
    //관찰자 2 : 고양이
    class Cat: Observer {
        override fun update() {
            println("야옹")
        }
    }​
  3. Event 발생시 서로 다른 동작 처리
    class Owner {
        val observerList = mutableListOf<Observer>()
    
        fun register(observer:Observer){
            observerList.add(observer)
        }
    
       fun notifyUpdate(){
           for(observe in observerList){
               observe.update()
           }
       }
    }​
  4. Observer들에게 update()를 알리기 위해 notifyUpdate() 함수 정의
fun main(){
    val owner=Owner()
    val dog=Dog()
    val cat=Cat()

    owner.register(dog) //강아지 옵져버 등록
    owner.register(cat) //고양이 옵져버 등록

    owner.notifyUpdate() //오너가 신호(밥먹어라)를 보냄 = 이벤트 발생
}

 

 

'TIL' 카테고리의 다른 글

TIL 43일차  (0) 2024.04.30
TIL 42일차  (0) 2024.04.19
TIL 40일차  (0) 2024.04.16
TIL 39일차  (0) 2024.04.15
TIL 38일차  (0) 2024.04.11