当前位置:网站首页 > Java基础 > 正文

java访问者模式教程



Python 代码:

Visitor Pattern with Python Code

from abc import abstractmethod,ABCMeta

定义一个表示元素(Element)的接口

class ComputerPart(metaclass=ABCMeta):

@abstractmethod def accept(self, inComputerPartVisitor): pass 

#创建阔爱站了ComputerPart的实体类 class Keyboard(ComputerPart):

def accept(self, inComputerPartVisitor): inComputerPartVisitor.visitKeyboard(self) 

class Monitor(ComputerPart):

def accept(self, inComputerPartVisitor): inComputerPartVisitor.visitMonitor(self) 

class Mouse(ComputerPart):

def accept(self, inComputerPartVisitor): inComputerPartVisitor.visitMouse(self) 

class Computer(ComputerPart):

_parts = [] def __init__(self): self._parts.append(Mouse()) self._parts.append(Keyboard()) self._parts.append(Monitor()) def accept(self, inComputerPartVisitor): for aPart in self._parts : aPart.accept(inComputerPartVisitor) inComputerPartVisitor.visitComputer(self) 

定义一个表示访问者的接口

class ComputerPartVisitor(metaclass=ABCMeta):

@abstractmethod def visitComputer(self,inComputer): pass @abstractmethod def visitMouse(self,inMouse): pass @abstractmethod def visitKeyboard(self,inKeyboard): pass @abstractmethod def visitMonitor(self,inMonitor): pass 

实现访问者接口的实体类

class ComputerPartDisplayVisitor(ComputerPartVisitor):

def visitComputer(self,inComputer): print("Displaying {0}. Called in {1}".format(inComputer.__class__.__name__,self.__class__.__name__)) def visitMouse(self,inMouse): print("Displaying {0}. Called in {1}".format(inMouse.__class__.__name__,self.__class__.__name__)) def visitKeyboard(self,inKeyboard): print("Displaying {0}. Called in {1}".format(inKeyboard.__class__.__name__,self.__class__.__name__)) def visitMonitor(self,inMonitor): print("Displaying {0}. Called in {1}".format(inMonitor.__class__.__name__,self.__class__.__name__)) 

调用输出

if name == ‘main’:

aComputer = Computer() aComputer.accept(ComputerPartDisplayVisitor())</pre> 

  • 上一篇: java大学教程页数
  • 下一篇: 325集java教程
  • 版权声明


    相关文章:

  • java大学教程页数2025-10-30 18:34:03
  • java编写计算器教程2025-10-30 18:34:03
  • hadoop视频教程 java2025-10-30 18:34:03
  • 杭州java教程2025-10-30 18:34:03
  • 开发java基础教程2025-10-30 18:34:03
  • 325集java教程2025-10-30 18:34:03
  • java高并发程序设计视频教程2025-10-30 18:34:03
  • java虚拟机教程推荐2025-10-30 18:34:03
  • android转java教程2025-10-30 18:34:03
  • java安装mod教程2025-10-30 18:34:03