2 개의 클래스 A와 B가 있으며 둘 다 속성 X와 Y가 있습니다. 그러나 "그들은 단지디자인 패턴 : 상속 또는 구성
상속
class A
{
public int X;
public int Y;
}
class B : A
{
public int Z;
}
클래스 B가없는 속성 X를 공유하고, Y., 클래스 B는 또 다른 특성, Z. 클래스 A를 가지고 있으며, B는 서로 전혀 관련이 is-a "클래스와의 관계이므로 상속을 중단합니다. 주체는 OOP입니다. 이 구성 주체를 나누기 때문에
구성
class A
{
public int X;
public int Y;
}
class B
{
public A ObjA;
public int Z;
}
클래스 B가 클래스 A에 "이-A"관계가 없습니다 OOP이다.
중복 코드가 없으면 상속 또는 구성을 사용해야하나요 (OOP의 원칙을 위반하더라도) 또는 다른 디자인 패턴이 있습니까? 개인적으로 상속을 사용하는 것은 가독성 때문에 악의가 적은 것으로 생각합니다.
* 어떻게해야합니까? * : 달성 하시겠습니까? 네가 무엇을 요구하는지 이해할 수 없다. BTW, 두 번째 예제에서 B ** ** A와 has-a 관계가 있습니다. –
@JBNizet 좀 더 명확하게 질문을 수정했습니다. 그게 도움이되는지 말해주세요 –
솔직히 말해서, 그렇지 않습니다. 제가 올바르게 이해한다면, B는 has-a 관계를 갖지 않으므로, composition은 사용되어서는 안되며, is는 A와 연관이 없기 때문에 상속을 사용해서는 안됩니다. 그게 맞습니까? 그런 다음, 그 중 아무 것도 사용하지 마십시오. B가 A와는 완전히 무관한지 확인하십시오. 자동차에 바퀴가 달려 있고 마우스에도 마우스가 있다고해서 꼭 관련이 있어야한다는 의미는 아닙니다. 어쩌면 실제 수업으로 구체적인 예를 들었을 때 우리는 더 많은 도움을 줄 수 있습니다. –