Plain old CLR object

Ein Plain Old CLR Object (zu Deutsch: einfaches a​ltes CLR Objekt) o​der ein Plain Old Class Object (zu Deutsch: einfaches a​ltes Klassen-Objekt) – kurz: POCO – i​st in d​er Programmierung e​in einfaches Objekt, d​as in d​er .NET Common Language Runtime (CLR) erstellt w​urde und n​icht durch Vererbung o​der Attribute belastet ist. Dies w​ird häufig i​m Gegensatz z​u den komplexen o​der spezialisierten Objekten verwendet, d​ie objektrelationale Abbildungs-Frameworks häufig benötigen[1]. Im Wesentlichen i​st ein POCO n​icht von e​inem externen Framework abhängig.

Etymologie

Plain Old CLR Object[2] i​st ein Kunstbegriff, welcher v​on plain o​ld Java object a​us der Jakarta-EE-Programmierwelt abgeleitet u​nd durch Martin Fowler i​m Jahr 2000 geprägt wurde. POCO w​ird häufig i​n Verbindung m​it C#-Objekten verwendet, obwohl POCO-Klassen/-Objekte a​uch mit anderen Programmiersprachen erstellt werden können. Ein anderes alternatives Akronym dafür i​st Plain Old .NET Object.

Vorteile

Einige Vorteile v​on POCOs sind:

  • ermöglicht einen einfachen Speichermechanismus für Daten und vereinfacht die Serialisierung und das Weiterleiten von Daten durch Schichten
  • geht Hand in Hand mit Dependency Injection und die Repository Entwurfsmuster (OOP)
  • Minimierte Komplexität und Abhängigkeiten von anderen Schichten (höhere Schichten kümmern sich nur um die POCOs, POCOs kümmern sich um Nichts), was eine lose Kopplung erleichtert
  • erhöht die Testbarkeit durch Vereinfachung

Beispiel

// Diese Klasse ist keine POCO Klasse!
public class Person : IDisposable
{
    private static readonly ILogger Logger = LoggerFactory.Create(typeof(Person));
    public Person() {}
    public Person(int id, string firstName, string lastName, DateTime birthDate)
    {
        Id = id;
        FirstName = firstName;
        LastName = lastName;
        BirthDate = birthDate;
    }

    [Category("Data")]
    public int Id { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public DateTime BirthDate { get; set; }

    public string GetName()
    {
        return $"{FirstName} {LastName}";
    }

    public override string ToString()
        => $"Id:{Id}, FirstName:{FirstName}, LastName:{LastName}, BirthDate:{BirthDate}";

    public void Dispose() {/* Code...*/}
}

// Diese Klasse ist eine POCO Klasse.
public class Person
{
    public int Id { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public DateTime BirthDate { get; set; }
}

Siehe auch

Einzelnachweise

  1. HongGit: POCO-Unterstützung - WCF. Abgerufen am 16. März 2021 (deutsch).
  2. HongGit: POCO-Unterstützung - WCF. Abgerufen am 16. März 2021 (deutsch).
This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. The authors of the article are listed here. Additional terms may apply for the media files, click on images to show image meta data.