Zuweisung einer Schnittstellenumsetzung
Verfasst: Donnerstag 7. Februar 2013, 17:36
Mein Code hat gravierende Architekturprobleme, da ich nicht weiß, wie man auf einigermaßen vernünftige Art eine Schnittstellenumsetzung der entsprechenden Schnittstelle zuweist. (Ich bin kein Informatiker
)
Die meisten meiner .py-Dateien fangen mit Anweisungen folgender Art an:wobei 'Alg' der Name einer Schnittstellen-Umsetzungsklasse ist, die ich im Code dann aufrufe. Das kommt mir nicht nur unflexibel vor, sondern auch deshalb störend, weil die verschiedenen Umsetzungsklassen die verschiedene Namen haben sollten, und nicht wie bei mir nur die Dateien, welche die Umsetzungsklassen enthalten. Eigentlich sollten meine verschiedenen Umsetzungsklassen nicht alle mit dem gleichen beginnen, sondern mit oder so ähnlich. Auch muss ich mir immer aufschreiben, welches Modul welche Schnittstellen benutzt, und dann bei einer Änderung sämtliche Module von Hand abändern, was extrem zeitraubend und fehleranfällig ist. Ich sehe aber einfach keine Möglichkeit, eine zentralisierte Klasse wie
zu schreiben, die ich mit im Hauptprogramm (oder wo ich sonst will) aufrufen kann.
Ich konnte bisher weder in Python-Handbüchern noch in Büchern über Entwurfsmustern Beispiele finden, wie man so etwas macht (wobei ich gerne zugebe, dass ich von den Entwurfsmustern fast nur Bahnhof verstanden habe). Meine Kollegen arbeiten alle in Java; kann mir vielleicht jemand konkret zeigen, wie man so etwas in Python3 macht?
Die meisten meiner .py-Dateien fangen mit Anweisungen folgender Art an:
Code: Alles auswählen
#!/usr/bin/python3
#from alg_2011 import Alg
from alg_2012 import Alg
#from alg_2013 import Alg
Code: Alles auswählen
class Alg(object): #SCHLECHTCode: Alles auswählen
class Alg_2012(Alg): #richtigCode: Alles auswählen
class Zuweisungen(object):
#
#weist Klasse 'umsetzung' der abstrakten Schnittstellenklasse 'Alg' zu
def hole_Alg_umsetzung(self, umsetzung):
assert umsetzung in ("alg_2011", "alg_2012", "alg_2013")
... #??
Code: Alles auswählen
hole_Alg(self,umsetzung="alg_2012")Ich konnte bisher weder in Python-Handbüchern noch in Büchern über Entwurfsmustern Beispiele finden, wie man so etwas macht (wobei ich gerne zugebe, dass ich von den Entwurfsmustern fast nur Bahnhof verstanden habe). Meine Kollegen arbeiten alle in Java; kann mir vielleicht jemand konkret zeigen, wie man so etwas in Python3 macht?