Introduction aux exemples de modèles de visiteurs et d'observateurs dans la programmation de modèles de conception Python

高洛峰
Libérer: 2017-03-13 18:02:23
original
1759 Les gens l'ont consulté

Cet article présente principalement le modèle de visiteur et d'observateur dans la programmation Pythonmodèle de conception, ainsi que la formulation des modèles de conception. propice à la coordination du code de programmation de collaboration en équipe. Les amis qui en ont besoin peuvent se référer au

Mode Visiteur
Je pense que le mode Visiteur consiste à modifier l'existant. programme. Sous le principe de la structure, pourquoi est-il utilisé pour étendre la fonction du code en ajoutant des visiteurs supplémentaires ? Lorsque vous avez de nombreuses classes et ajoutez de nouvelles méthodes à une certaine couche de structure, si vous ajoutez ou modifiez la classe de base, cela peut détruire la conception d'origine et provoquer des problèmes de compatibilité, alors ajoutez-la uniquement de manière dynamique aux classes requises.

Exemple Python
Voici un exemple de construction d'une voiture. Chaque composant a une méthode d'acceptation pour accepter le soi-disant « visiteur » que j'ai mentionné ci-dessus, et ce visiteur est transmis en paramètre. en fait, c'est une instance d'une classe qui contient des fonctions. Elle possède de nombreuses méthodes commençant par visit correspondant à différents composants. De cette façon, il n'est pas nécessaire de modifier ces composants, uniquement les parties pertinentes de notre classe de visiteurs.


# 轮子,引擎, 车身这些定义好了都不需要变动
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)
Copier après la connexion


Modèle d'observateur
Quand on veut le étatobjet 🎜> change, alors la dépendance et tous ses objets peuvent changer en conséquence (être averti), puis le modèle Observer peut être utilisé, dans lequel ces objets dépendants sont les objets de l'observateur, et l'objet qui doit changer est le ainsi- appelé 'observation' '

exemple de python



Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!