Heim  >  Artikel  >  Backend-Entwicklung  >  Einführung in Besucher- und Beobachtermusterbeispiele in der Python-Entwurfsmusterprogrammierung

Einführung in Besucher- und Beobachtermusterbeispiele in der Python-Entwurfsmusterprogrammierung

高洛峰
高洛峰Original
2017-03-13 18:02:231716Durchsuche

In diesem Artikel werden hauptsächlich Besucher- und Beobachtermuster in PythonEntwurfsmusterProgrammierung sowie die Formulierung von Entwurfsmustern vorgestellt Förderlich für die Koordination des Team-Collaboration-Programmiercodes. Freunde, die ihn benötigen, können sich auf

Besuchermodus
Ich denke, der Besuchermodus dient dazu, den vorhandenen zu ändern Warum wird das Programm unter der Prämisse der Struktur verwendet, um die Funktion des Codes durch das Hinzufügen zusätzlicher Besucher zu erweitern? Wenn Sie viele Klassen haben und einer bestimmten Strukturschicht neue Methoden hinzufügen und die Basisklasse hinzufügen oder ändern, kann dies das ursprüngliche Design zerstören und Kompatibilitätsprobleme verursachen. Fügen Sie sie daher nur dynamisch zu den erforderlichen Klassen hinzu.

Python-Beispiel
Hier ist ein Beispiel für den Bau eines Autos. Jede Komponente verfügt über eine Akzeptanzmethode, um den oben erwähnten sogenannten „Besucher“ zu akzeptieren, und dieser Besucher wird als Parameter übergeben Tatsächlich handelt es sich um eine Instanz einer Klasse, die einige Funktionen enthält. Sie verfügt über viele Methoden, beginnend mit „visit“, die verschiedenen Komponenten entsprechen. Auf diese Weise müssen diese Komponenten nicht geändert werden, sondern nur die relevanten Teile unserer Besucherklasse.


# 轮子,引擎, 车身这些定义好了都不需要变动
class Wheel:
  def init(self, name):
    self.name = name
  def accept(self, visitor):
    # 每个visitor是同样的,但是其中的方法是不一样的,比如这里是visitWheel,
    # 然后传入了self,想想?他其实想做什么就能做什么
    visitor.visitWheel(self)

class Engine:
  def accept(self, visitor):
    visitor.visitEngine(self)

class Body:
  def accept(self, visitor):
    visitor.visitBody(self)

# 我们要组合成车
class Car:
  def init(self):
    self.engine = Engine()
    self.body  = Body()
    self.wheels = [ Wheel("front left"), Wheel("front right"),
            Wheel("back left") , Wheel("back right") ]

  # 这个也不需要在动,他只是上面部件的组合,只是做了属性的委托
  def accept(self,visitor):
    visitor.visitCar(self)
    self.engine.accept(visitor)
    self.body.accept(visitor)
    for wheel in self.wheels:
      wheel.accept(visitor)

# 这个才是我们的访问者,每次的修改都在这里面
class PrintVisitor:
  def visitWheel(self, wheel):
    print "Visiting "+wheel.name+" wheel"
  def visitEngine(self, engine):
    print "Visiting engine"
  def visitBody(self, body):
    print "Visiting body"
  def visitCar(self, car):
    print "Visiting car"

if name == 'main':
  car = Car()
  visitor = PrintVisitor()
  car.accept(visitor)


Beobachtermuster
Wenn wir den ZustandObjekts wollen 🎜>Ändert sich, dann können sich die Abhängigkeit und alle ihre Objekte entsprechend ändern (werden benachrichtigt), dann kann das Observer-Muster verwendet werden, bei dem diese abhängigen Objekte die Objekte des Beobachters sind und das Objekt, das sich ändern muss, das so- genannt 'Beobachtung' '

Python-Beispiel



Das obige ist der detaillierte Inhalt vonEinführung in Besucher- und Beobachtermusterbeispiele in der Python-Entwurfsmusterprogrammierung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn