当前位置:网站首页 > 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 joinpoint教程
  • 下一篇: java你好世界教程
  • 版权声明


    相关文章:

  • java joinpoint教程2025-11-14 10:50:05
  • java矩阵相乘教程2025-11-14 10:50:05
  • java安装教程win102025-11-14 10:50:05
  • java整数类教程视频2025-11-14 10:50:05
  • java全实例教程2025-11-14 10:50:05
  • java你好世界教程2025-11-14 10:50:05
  • selenium2.0 java教程2025-11-14 10:50:05
  • 最全的java教程网站2025-11-14 10:50:05
  • java程序案例教程2025-11-14 10:50:05
  • java学习菜鸟教程2025-11-14 10:50:05