상속은 Cat과 Dog의 동작을 Animal의 동작과 밀접하게 결합합니다. 어느 것이 당신이 원하는 것일 수 있습니다. 당신은 아무것도이 가능합니다 우주를 만들려고, 그리고 동물의 종류를 변경할 수있는 경우
그러나, 당신은 .. 식별자 방법을 사용하는
을 선호 할 수 있습니다하지만 당신이 더 걸릴 수 있습니다.
에 따르면 Gang of Fours design patterns 당신이해야
" '클래스 상속'을 통해 찬성 '개체 구성'."
동물은 개와 꼬리가 짖기 때문에 개가됩니다. 개가 시간이 지남에 따라 말을 배우는 우주에서이 행동을 수정할 수 있기를 원할 것입니다.
그런 다음 동작을 추상화 한 다음이 동작 내에서 상속을 사용할 수 있습니다.
class Tail
{
DoYourThing()
}
class WaggyTail : Tail
{
DoYourThing()
{
// Wag
}
}
class Noise
{
DoYourThing()
}
class Bark : Noise
{
DoYourThing()
{
// Bark
}
}
class Talk : Noise
{
DoYourThing()
{
// Talk
}
}
class Animal
{
public Noise { get; set; }
public Tail { get; set; }
}
당신은 당신의 고양이와 개를 설정할 수 있습니다 :이 클래스 구조와
당신이 당신의 슈퍼 필요로 할 때
Animal dog = new Animal { Noise = new Bark(), tail = new DoggyTail() }
Animal cat = new Animal{ Noise = new Purr(), tail = new CattyTail() }
.. 다음 번식 당신은 간단한 변경 그들의 행동 할 수
개.Noise = new Talk();
.. 안녕하세요 presto, 당신의 개가 지금 말할 수 있습니다 .. 당신이 개를 그때 노래해야한다면, 당신은 새로운 노래 수업을 만듭니다. 더 이상의 변화는 필요 없습니다.
@stackoverflow.com/questions/269496/inheritance-vs-aggregation –
@jleedev : 이것은 집계 또는 구성이 아닙니다. 적어도 엄격한 의미는 아닙니다. –
흠, 천천히해야합니다. –