2023-java-study / book-study

북 스터디 기록 레포지토리
0 stars 0 forks source link

[item 23] 계층구조를 인터페이스로 만들 수 있을까? #73

Closed ssstopeun closed 1 year ago

ssstopeun commented 1 year ago

item 23에서는 태그 달린 클래스는 계층구조로 대체하자 는 말을 하고 태그 달린 클래스를 추상클래스로 바꾸는 것을 예시로 들고 있습니다.

그런데 앞선 item에서는 추상클래스보다 인터페이스를 쓰자고 하고 있는데 그렇다면 태그 달린 클래스를 계층구조로 바꿀 때 인터페이스를 사용하는 것이 더 좋지 않을까.. 하는 생각을 했습니다. 태그달린 클래스를 인터페이스로 구현하는 것도 가능할까요...?

gmelon commented 1 year ago

상황에 따라 다르다고 생각합니다!!

아시다시피 인터페이스는 인스턴스 변수를 가질 수 없는 등의 제약이 있으므로 만약 Item 23에서 제시한 예시코드와 같이 추상 클래스로 분리한 클래스가 별도의 필드를 갖지 않는다면 인터페이스로도 충분히 대체가 가능하지 않을까 하고 생각합니다.

추가적으로 만약 필드가 필요한 상황이라도 인터페이스로 API를 선언하고 골격 구현 추상 클래스로 구현에 대한 가이드를 제공하는 방식도 생각해볼만 할 것 같습니다!

다른 분들은 어떻게 생각하시는지 얘기해보면 좋을 것 같네요!