2012-12-20 4 views
5

Beim Erstellen einer API in Python bin ich mir nicht sicher, welchen Ansatz man bei der Erstellung einer Instanz eines Basisobjekts mit init nehmen sollte.OO Design Pattern für Objektinitiierung in einer API

Wenn in der API eine Instanz des Objekts zu schaffen, wird der Benutzer wahrscheinlich wollen das Objekt eine von zwei Dinge sein:

  1. Eine Instanz eines Objekts, das bereits vorhanden ist, was die API zu sein genannt gegen
  2. in ein neues Objekt erstellen, was die API gegen aufgerufen wird

gibt es ein akzeptiertes Design-Muster für das? Sollte init einfach ein leeres Objekt erstellen, und dann muss der Consumer eine get oder set-Methode aufrufen? Oder vielleicht sollte init ein Argument dafür haben, ob das ein get oder set ist? Oder schließlich, sollte aus den Argumenten von init abgeleitet werden?

Antwort

2

ich nicht eines Entwurfsmusters denken kann genau entsprechen, was Sie beschreiben, da:

  • Factory pattern beschäftigt sich in der Regel mit einer Familie (Hierarchie) von Klassen.
  • Builder pattern befasst sich normalerweise mit komplexen Objekten, die aus vielen Klassen bestehen.

Wie wäre es mit der Überladung der API zu den folgenden?

Wenn ohne Argumente aufgerufen:

custom_API() 

dann gerade ein neues Grundobjekt mit einigen vernünftigen Standardwerten erstellen und die Verwendung durch Verbraucher bekommen/set lassen Sie es zu konfigurieren.

Wenn es mit einem Suchschlüssel von einer Art aufgerufen:

custom_API("abc") 

dann das entsprechende Objekt zurückgeben, oder eine Liste von Objekten des Suchschlüssels ist vage oder None, wenn kein passendes Objekt gefunden werden kann.