nicht 'immer' die Zusammensetzung oder Vererbung oder umgekehrt bevorzugen; sie haben unterschiedliche Semantiken (Bedeutungen); schaue genau auf die Bedeutungen, dann entscheide - es ist egal, ob einer 'leichter' ist als der andere, für Langlebigkeit ist es wichtig, dass du die Semantik richtig bekommst
erinnern: is-a = type, has-a = containment
so ist in diesem Fall ein Portfolio logisch eine Sammlung von Fonds; ein Portfolio selbst ist kein Typ Fonds, so Zusammensetzung das richtige Verhältnis
EDIT ist: ich falsch verstanden ursprünglich die Frage, aber die Antwort ist immer noch die gleichen. Ein Portfolio ist kein Listentyp, sondern eine eigenständige Entität mit eigenen Eigenschaften. Ein Portfolio ist beispielsweise ein Aggregat von Finanzinstrumenten mit anfänglichen Investitionskosten, einem aktuellen Gesamtwert, einer Historie von Werten im Zeitverlauf usw., während eine Liste eine einfache Sammlung von Objekten darstellt. Ein Portfolio ist eine "Art von Liste" nur im abstraktesten Sinne.
EDIT 2: Denken Sie über die Definition von Portfolio - es wird ohne Ausnahme als eine Sammlung von Dingen charakterisiert. Das Portfolio eines Künstlers ist eine Sammlung seiner Kunstwerke, das Portfolio eines Webdesigners ist eine Sammlung seiner Websites, das Portfolio eines Investors besteht aus allen Finanzinstrumenten, die ihm gehören, und so weiter. Wir brauchen also ganz klar eine Liste (oder eine Art), um ein Portfolio zu repräsentieren, aber das bedeutet keinesfalls, dass ein Portfolio eine Art Liste ist!
Angenommen, wir entscheiden, Portfolio von List erben zu lassen. Dies funktioniert so lange, bis wir dem Portfolio eine Aktie, eine Anleihe oder ein Edelmetall hinzufügen, und plötzlich funktioniert die falsche Vererbung nicht mehr. Oder angenommen, wir werden gebeten, Bill Gates 'Portfolio zu modellieren und zu finden, dass List keinen Speicher mehr hat ;-) Realistischer werden wir nach zukünftigem Refactoring wahrscheinlich feststellen, dass wir von einer Basisklasse wie Asset übernehmen sollten, aber wenn Wir haben bereits von List geerbt, dann können wir nicht.
Zusammenfassung: Unterscheiden Sie zwischen den Datenstrukturen, die wir wählen, um ein Konzept darzustellen, und der Semantik (Typhierarchie) des Konzepts selbst.
Siehe auch [prefer-composition-over-vererbung?] (Http://stackoverflow.com/questions/49002/prefer-composition-over-herheritance?rq=1) – nawfal