You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
... 만약 책임을 여러 종류의 객체가 수행할 수 있다면 협력자는 객체가 아니라 추상적인 역할로 대체된다
저자는 대체 가능성을 '역할'의 핵심적인 의의로 설명하지요. 말씀하신대로 예시 이야기 내에서는 토끼의 역할을 대체하는 객체(등장인물)가 나오지 않기도 하고,
토끼가 하는 일을 '역할'로 추상화하려고 보니 이게 사회자인지 비서인지 법원 사무관인지 애매하여 독자가 바로 알아듣기 좋은 말을 생각해내지 못해서 예시에서 뺐을 것 같기도 해요.
객체가 다른 객체로 대체할 수 없는 상황이거나 재사용될 일이 없다면 항상 '역할'로 추상화할 필요는 없다는 예시로 토끼를 남겨놓은 것 같기도 합니다.
프로그래밍 상황에 대입해보자면, Swift에서는 타입이 없는 객체는 없으니까 위와 같은 상황은 없을 것이라고 생각해요.
굳이 대입해보자면, 우리가 사용자 정의 타입을 하나 만들 때 당장은 필요 없더라도 추후 기능 추가나 유지보수 시,
일부 역할을 대체가능하도록 하기 위해 프로토콜(들)을 정의하여 채택해준다거나, 상속 가능하도록 class로 만드는 경우가 있을 수 있겠네요.
토끼를 토끼로만 두고 쓸지, "사회자" 프로토콜 타입(역할)을 수행하도록 할지 선택하는 것이죠.
둘 중에 어떤 방식을 택할지는 개발 상황에 따라서 달라질 것 같아요.
추후 유지보수 비용과 현재 개발 비용을 저울질해서 상황에 따라 선택할 것 같습니다!
토끼를 역할로 분류하지 않은 이유는 '토끼의 역할(재판을 진행)을 대체하는 등장인물이 나오지 않아서' 라고 생각합니다.
제가 이런 상황을 설계한다고 가정하면, 토끼만 재판을 진행하는 상황이라고 하더라도 누구라도 와서 재판을 진행할 수 있도록 구현할 것같습니다. 다만, 책 132쪽의 만약 책임을 여러 종류의 객체가 수행할 수 있다면 협력자는 객체가 아니라 추상적인 역할로 대체된다. 라는 부분을 생각했을 때, 우선은 '재판을 진행하는 객체'만 만들어두고 진행할 것같아요.
페이지 125쪽 - 그림 4.7
우선 토끼의 역할은 재판 상황에서 MC? 사회자? 역할을 합니다.
책에서 나오는 앨리스 이야기에서는 판사와 증인이 교체가 되어 그림에서는 역할로 표현했습니다.
토끼같은 경우는 역할은 사회자이지만 판사와 증인처럼 교체가 되지 않아 역할로 구분을 하지는 않은거 같습니다.
이 부분에 대해 어떻게 생각하시나요? 저는 "어...? 약간 통일성이 없는거 같네...?"라는 생각이 들었고
또 다른 한편으로는 "하기사... 사회자는 토끼밖에 없으니.. 굳이 역할로 구분할 필요는 없지..."라는 생각이 들었어요!
이걸 프로그래밍 상황에 대입해보자면, 여러분들은 어떻게 하실건가요?
The text was updated successfully, but these errors were encountered: