Taking baby-developer steps

[객체지향의 사실과 오해] 2. 이상한 나라의 객체 - 5 행동이 상태를 결정한다(RDD, 책임-주도 설계) 본문

CS 지식/객체지향

[객체지향의 사실과 오해] 2. 이상한 나라의 객체 - 5 행동이 상태를 결정한다(RDD, 책임-주도 설계)

Surin Lee 2023. 11. 8. 23:31

객체 지향에서 상태를 먼저 결정하고 행동을 나중에 결정하는 것은  다음과 3가지 이유로 설계에 나쁜 영향을 미친다.

 

1. 캡슐화 저해

 상태에 초점을 맞출 경우, 상태가 객체 내부에 깔끔하게 캡슐화 되지 못하고 공용 인터페이스에 그대로 노출될 수 있는 위험이 높아 진다.

2. 협력성 저하(고립된 섬으로서의 객체)

 객체는 협력자여야한다. 존재 이유 자체가 다른 객체와 협력하기 위함이다. 상태를 먼저 고려하게 되면 문맥에서 벗어난 객체가 될 위험이 커진다.

3. 재사용성 저하

 재사용성은 협력할 수 있는 능력에 좌우된다. 상태에 초점을 맞춘 객체는 다양한 협력에 참여하기 어렵고 재사용성이 저하된다.

 

객체는 "협력"하기 위해 존재하며, "행동"이 협력에 참여하는 유일한 방법이다. 우리가 애플리케이션 안에서 어떤 행동을 원하는 가가 "적합한 객체"를 결정한다.

결국, 객체의 행동은 객체가 완수해야 하는 책임을 의미한다. 어떤 책임이 필요한가를 결정하는 과정이 전체 설계를 주도해야 한다. 이런 관점이 책임-주도 설계(Responsibility-Driven Design, RDD)이다. RDD는 문맥 안에서 객체의 행동을 생각함으로서 응집도 높고 재사용가능한 객체를 만들 도록 돕는다.

 

"행동이 상태를 결정한다!"

 

Comments