같은 인터페이스를 공유하는 인터페이스 구현 클래스들이 같은 데이터를 동일하게 사용하는 경우가 있다면 엄청난 중복코드가 만들어지지 않아?
예를 들어서 스마트폰과 태블릿 PC 모두 화면이 필요한데
class Screen { ... };
class ScreenEmbedDevice { ... }; 인터페이스
class SmartPhone : public ScreenEmbedDevice {
...
Screen screen_;
};
class TabletPc : public ScreenEmbedDevice {
...
Screen screen_;
};
이렇게 스크린을 붙이고 스크린과 관련해서 겹치는 작업이 너무 많다면 인터페이스 상속하는 새로운 클래스가 나왔을 때마다 중복코드가 쌓이는 거 아니냐는거야
예시에는 허점이 있을 수 있지만 개발하다 보면 어떤 인터페이스에 멤버변수를 둬야할 일이 많이 생기던데
예를 들어서 스마트폰과 태블릿 PC 모두 화면이 필요한데
class Screen { ... };
class ScreenEmbedDevice { ... }; 인터페이스
class SmartPhone : public ScreenEmbedDevice {
...
Screen screen_;
};
class TabletPc : public ScreenEmbedDevice {
...
Screen screen_;
};
이렇게 스크린을 붙이고 스크린과 관련해서 겹치는 작업이 너무 많다면 인터페이스 상속하는 새로운 클래스가 나왔을 때마다 중복코드가 쌓이는 거 아니냐는거야
예시에는 허점이 있을 수 있지만 개발하다 보면 어떤 인터페이스에 멤버변수를 둬야할 일이 많이 생기던데
추상 클래스 사용하기 ㅇㅅㅇ 어쩌피 속성이 같은거지 내용이 같은건 아니라
인터페이스 클래스에 멤버변수 붙여서? 근데 그러면 상속이랑 크게 다를 거 없지 않냐
정 뭣하면 어댑터 패턴으로 대체하면 됨
구현은 다 해놓고 인터페이스 맞추는 식으로?
ㅇㅇ boilerplate 많아지긴함
유지보수에 별로 안 좋지 않나 만약 그 중복되는 부분에 변경이 필요하면 수많은 중복 코드를 다 살펴서 수정해야 하는데 사람인지라 다 반영된다는 보장도 없고
어치피 은탄환은 없고 그런 어려움을 감수할 정도로 상속의 폐해도 크다는거지