단일 함수를 재사용하기 위해 클래스를 확장하는 것이 합리적인 관행입니까?


10

워드 프레스 사이트를 위해 다양한 포스트 필터를 개발 중이며 단일 클래스로 처음 4 개를 구축했습니다.

마지막 두 가지는 클래스에서 단일 함수 (최종 링크를 생성하는 함수) 만 공유 할 수있을 정도로 범위가 다릅니다.

이 경우 또는 유사한 가상의 여러 인스턴스에서 해당 기능을 갖기 위해 원래 클래스를 확장하는 것이 합리적입니까, 아니면 더 나은 방법이 있습니까?


이 질문을 이해하지 못합니다. 수업으로 물건을 건축한다는 것은 무엇을 의미합니까? 이 클래스는 무언가를 상속합니까? 계층의 최상위 클래스가 이미 공통 기능을 가지고 있지 않습니까?
David Thornley

답변:


19

아닙니다. 두 클래스가 너무 다르면 하나의 기능 만 공유 할 수 있으며, 서로 교환 할 수없는 가능성이 있으므로 liskov대체 원칙을 어기 게 됩니다.

논리적 인 경우에만 기본 클래스에서 파생됩니다. 단일 코드 조각을 공유하는 것이 상속에 대한 정당화는 거의 없습니다 :)

이 특정 예제에서는 컴포지션 을 통해 해당 기능을 다시 사용하려는 것 같습니다 .


3
상속보다 구성을 선호하십시오! 대부분의 경우 이것은 장기적으로 삶을 단순하게 만듭니다.
트래비스

작곡 FTW!
back2dos

가치 내 대답은 기본적으로 @Sardathrion과 동일 지적, 난 그냥 :)이와 관계있는 원칙에 링크
MattDavey

7

클래스 설명에 " " 라는 단어가 있으면 두 개 이상의 클래스로 나누어야합니다. 사물을 보면 해당 함수를 현재 가지고있는 클래스에서 참조하는 다른 클래스의 멤버로 만들 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.