우아한테크코스 3

ListView 는 ViewHolder 재사용을 못하는 거 아니었나요??? (아님) feat 우테코

우테코에서는 "과속, 과식하지 말것" 이라는 권장 목표가 있다.즉, 수업에서 다루는 것부터 공부하고 미션에 적용해보고 나서, 그 다음 기술을 사용하는 것이다. 이번 미션은 '영화 티켓 예매'이다. 오른쪽과 같은 화면을 `RecyelrView`가 아니라 `ListView`로 구현해야 한다. 나는 리스트뷰를 사용해본 적이 없다. 그렇다고, 이 미션에서 리사이클러뷰를 사용할 수는 없다.그래서 진행 전부터 난관이 예상되었다. 이번 글에서는 리스트뷰를 통해 화면을 구성하고뷰홀더 패턴을 적용, 뷰홀더를 뷰의 tag 에 캐싱하도록 리팩토링.뷰의 tag 에 캐싱하는 게 아닌, 다른 객체에 캐싱하도록 리팩토링.참고로 MVVM 이 아닌, MVP 패턴을 적용했고,viewBidning, dataBinding 을 사용하지 않고..

[Kotlin] 방어적 복사와 깊은 복사, 얕은 복사 (feat. 우테코)

Mutablility(가변성)과 방어적 복사, 혹은 방어적 프로그래밍은 공부할 때 봤던 코틀린 인 액션 책에 "6.3.2 읽기 전용과 변경 가능한 컬렉션"에서 잠깐 다룬다.(이 글에서도) 하지만 뭔가 부족한 느낌이 있었는데, 마침 우테코 수업에서 이 내용을 다루었다!! 모든 코드는 Kotlin 으로 작성된다. 얕은 복사(Shallow copy)와 깊은 복사(Deep Copy), 그리고 방어적 복사(Defensive Copy) 순서로 공부해보자. 얕은 복사(Shallow copy) & 깊은 복사(Deep copy) 먼저 방어적 복사 이전에 얕은 복사와 깊은 복사를 알아야 한다. 얕은 복사(Shallow copy) 얕은 복사: 객체의 주솟값을 복사한다. 복사된 객체의 인스턴스는 원본 객체의 인스턴스와 같은 ..

Kotlin 2024.03.08

디자인 패턴 - 전략 패턴(Strategy pattern)과 디자인 패턴에 대한 고찰_feat(우테코 - 자동차 경주)

우테코 1단계 level 1 의 자동차 경주 미션 리팩토링을 진행하고, 미션 리뷰어에게 전략 패턴에 대한 이야기를 들었다. 나는 사실 전략 패턴에 대해 잘 알지 못했다. 그런데 전략 패턴을 이미 구현했다는 피드백을 보고 신기함을 느꼈다. 어떻게 제대로 모르는 것을 구현할 수 있지? 이 궁금증을 시작으로 전략 패턴을 더 자세히 공부하기로 했다. 전략 패턴(Strategy Pattern)? '알렉산더 슈베츠' 저자의 '디자인 패턴에 뛰어들기' 라는 책에서는 이렇게 설명하고 있다. (이 글은 위 링크 글을 보고 공부하여 정리한 내용으로 원문을 참조하시는 것을 추천한다.) 전략 패턴은 알고리즘들의 패밀리를 정의하고, 각 패밀리를 별도의 클래스에 넣은 후 그들의 객체들을 상호교환할 수 있도록 하는 행동 디자인 패..