SE-Jr / tada.js

:tada: Simple Carousel Javascript Library
MIT License
6 stars 1 forks source link

Composite Pattern 이용해서 Components 분리하기 #22

Closed helloheesu closed 6 years ago

helloheesu commented 6 years ago

설계

Composite Pattern - 컴포넌트의 '묶음'만을 바라본다.

Component

공통 행동 인터페이스를 정의하는 상위 객체. 특정 페이지로 이동할 수 있고 화면 사이즈가 바뀌면 반영할 수 있다.

Controller

주요 데이터를 관리하는 객체. 현재 페이지 번호, 전체 페이지 수 등을 저장하고 다른 컴포넌트들에게 대답해준다.

장단점

장점

단점

TODO

리팩토링

demo 분리

테스트 작성

hyeonmi commented 6 years ago

controller 설명에 "주요 데이터"를 관리하는 객체라고 되어 있는데 constroller의 역할이 무엇이라고 생각하시나요?

helloheesu commented 6 years ago

Composite Pattern 은 잘못된 선택임을 깨달음.

결국 다형성을 원했던 것 뿐이다.

다른 패턴들 비교 참고 1 2

helloheesu commented 6 years ago

설계에서 (패턴을 사용해서) 얻고자 하는 것

  1. (라이브러리 사용자가,) 여러 컴포넌트 클래스에 대해서 알 필요 없이, 옵션 전달 같이 간단히 조작만 알면 되게 하고 싶다 -> Facade Pattern (? Mediator Pattern?)
  2. 각 컴포넌트를 개발할 때 다른 컴포넌트가 영향을 최대한 받지 않게 하고 싶다. -> 각 컴포넌트별 클래스 분리
  3. 컴포넌트에 중복되는 동작을 묶어서 일관성을 유지하고 싶다. -> 상속
  4. '현재 페이지' 같은 정보가 항상 동기화된다는 걸 보장하고 싶다. 컴포넌트 개발자가 신경을 많이 쓰지 않아도 보장하고 싶다. -> ??

필요한 역할들

hyeonmi commented 6 years ago

설계 패턴에서 1번에 퍼사드로 사용한다고 하면 사용자에게 제공할 공개 함수(기능)을 먼저 추려보는게 좋을거 같아요. 그리고 기우 일수 있으나 첨언을 하면... 내가 구현을 하려다 보니 이런 패턴이 필요해서 사용하게 됐어가 되어야 하는데 이런 패턴을 여기에 적용해 보자가 되면 디자인 패턴 중독에 빠질수 있어요.

hyeonmi commented 6 years ago

덕분에 Composite pattern 대해 다시 생각해 볼 기회가 됐네요~ 👍