객체지향의 사실과 오해 - 협력하는 객체들의 공동체
TIL
🌱 난 오늘 무엇을 공부했을까?
📌 객체지향의 사실과 오해 - 협력하는 객체들의 공동체
📍 협력
- 요청과 응답으로 구성
- 요청을 처리하는 방법이 메서드
📍 역할, 책임
- 협력에 찹여하는 특정한 객체가 차지하는 책임이나 임무.
- 의미적으로 책임이라는 개념을 내포.
- 특정한 역할은 특정한 책임을 암시.
- 여러 객체가 동일한 역할을 수행할 수 있다.
- 역할은 대체 가능성을 의미한다.
- 각 객체는 책임을 수행하는 방법을 자율적으로 선택할 수 있다.
- 하나의 객체가 동시에 여러 역할을 수행할 수 있다.
📍 상태와 행동
- 협력을 하기위한 어떤 행동
- 그 행동을 하는데 필요한 상태
- 객체는 다른 객체가
무엇(what)
을 수행하는지는 알 수 있지만, 어떻게(how)
수행하는지에 대해 알 수 없다.
📍 객체지향의 본질
- 시스템을 상호하는 자율적인 객체들의 공동체로 바라보고 객체를 이용해 시스템을 분할하는 방법.
- 자율적인 객체는 상태와 행위를 함께 지니고 스스로 자기 자신을 책임지는 객체.
- 자율적인 객체로 구성하면 유지보수가 쉽고 재사용이 용이한 시스템을 구축할 수 있는 가능성을 제시.
- 객체는 시스템의 행위를 구현하기 위해 다른 객체와 협력한다.
각 객체는 협력 내에서 정해진 역할을 수행하며 역할은 관련된 책임의 집합
- 객체는 다른 객체와 협력하기 위해 메시지를 전송하고, 메시지를 수신한 객체는 메시지를 처리하는 데 적합한 메서드를 자율적으로 선택한다.
📍 후기
- 예전에 클린 아키텍처를 적용하면서 가장 중요했던 부분은 프로토콜로 각 객체의 다형성을 보장하는 방식이였다고 생각한다. 그렇게 했을때 사용해야 하는 메서드는 기본적으로 구현해줘야 때문에 객체를 자유롭게 바꿔가며 사용할 수 있는 이점이 있었기 때문이다.
- 객체는 다른 객체가
무엇(what)
을 수행하는지는 알 수 있지만, 어떻게(how)
수행하는지에 대해 알 수 없다. 라는 말을 보고 다시 상기하게 되었다.
- 예전에 잠깐 배운 전략, 상태 디자인 패턴도 결국
무엇(what)
에 중점을 맞춰서, 객체가 원하는 일만 수행할 수 있다면 자유롭게 변경하면서 마음대로 사용하려고 만들어지지 않았을까..?