Model을 어떻게 관리할 것인가?

Yejung·2022년 11월 23일
0

NEXT STEP 로또 미션을 하면서 MVC 패턴을 알게 되고 그렇게 나눠서 관리하고 있다.

여기서 Model인 로또를 어떻게 관리할 지 오늘 고민했다.

내가 저번 미션 PR 요청을 보내면서 이 부분이 고민이라고 말씀 드리니까 리뷰어님이 엄청 자세하게 생각이 논리적으로 흐를 수 있도록 답변해주셨다.

state와 setState를 직접 구현해서 클로저처럼 만들어도 될 거 같고,
아니면 그냥 가볍게 객체로 구현해도 괜찮을 거 같았는데,
로또는 이 미션에서 중요한 데이터 값이므로 외부에서 조작되게 하고 싶지 않았다.

그래서 클래스에서 private으로 관리하는걸로 결정하고 코드를 작성하고 있는데
저번에 뚜렷한 의도없이 습관적으로 클래스와 싱글톤 패턴을 사용했다가
그렇게 사용한 의도를 리뷰어님께 질문을 받고 당황했어서
이번에는 공부해서 정확한 의도를 가지고 사용하려고 한다.

클래스는 데이터와 이를 조작하는 코드를 하나로 추상화 시킬 수 있는 데이터 타입이다.
내 프로젝트에는 로또 데이터가 있고, 로또를 발행해주는 코드, 로또를 초기화 시켜주는 코드가 있다.
이렇게 데이터와 데이터를 조작하는 코드를 Lotto라는 클래스 하나로 묶어준다면 모델을 관리하기가 쉽고 가독성이 좋아지겠다고 판단했다.
또 위에서 말한 것과 같이 로또 데이터는 private으로 만들어 외부에서 해당 데이터를 참조하면 에러가 발생하게 되므로 의도치 않은 변경을 막을 수 있기 때문에 클래스를 선택했다.

또한 로또 클래스는 실행 시 하나의 인스턴스만 생성되어 계속 사용하면 되겠다고 생각해서
싱글톤 패턴을 채택하게 되었다.
그런데 공부해보니까 싱글톤 패턴의 단점이 많다고 한다.
이것도 리뷰어님께 또 의견을 물어보고 다음 리팩토링에 넣어야 할 수도 있겠다!

profile
이것저것... 차곡차곡...

0개의 댓글