Vererbung vs enum-Eigenschaften in der Domäne Modell

Hatte ich eine Diskussion auf der Arbeit über "die Vererbung im domain-Modell erschwert die Entwickler Leben". Ich bin ein OO-Programmierer, so dass ich begann zu suchen nach Argumenten, die mit Vererbung im domain-Modell erleichtert dem Entwickler das Leben wirklich statt-switches, die alle über den Ort.

Was ich sehen möchte, ist dies :

class Animal {

}

class Cat : Animal {

}

class Dog : Animal {

}

Was der andere Kollege sagt, ist :

public enum AnimalType {
    Unknown,
    Cat,
    Dog
}

public class Animal {

    public AnimalType Type { get; set; }

}

Wie kann ich ihn überzeugen (links sind WILLKOMMEN ), dass eine Klassen-Hierarchie wäre besser, als dass es eine enum-Eigenschaft für diese Art von Situationen?

Dank!

  • Ist das für Sie eine in-memory-Objekt-Modell oder ein ORM? Ich finde nicht, die Tiere z.B. sehr nützlich, da es nicht ausüben, viele der häufigsten Probleme, die Sie Gesicht, wenn Sie echte OO-design.
  • vereinbart. Speziell, was die Winkel Verhalten?
  • Hunde bellen, Katzen miauen, mit Ihrer Kollegin, die Implementierung dieser Verhaltensweisen ist schwer zu implementieren in C# (zum Beispiel). Es ist immer noch sinnvoll in funktionale Sprachen wie F#, wobei diskriminiert Gewerkschaften sind ein sehr mächtiges Mittel zur Verfügung zu stellen Polymorphismus.
  • und @sfinnie: es ist ein anemic domain model für ORM und business-Schicht. Aus meiner Sicht ist ein domain-model-Klasse kann Eigenschaften haben, die keine Bedeutung haben, für andere Klassen.
Schreibe einen Kommentar