UML类图

代码实现
public abstract class Visitor
{
public abstract void VisitComponentA(Component component);
public abstract void VisitComponentB(Component component);
}
public abstract class Component
{
public abstract void Receive(Visitor visitor);
}
public class ComponentA : Component
{
public override void Receive(Visitor visitor)
{
visitor.VisitComponentA(this);
}
}
public class ComponentB : Component
{
public override void Receive(Visitor visitor)
{
visitor.VisitComponentB(this);
}
}
public class Manager
{
public List<Component> components = new List<Component>();
public void Receive(Visitor visitor)
{
foreach (var component in components)
{
component.Receive(visitor);
}
}
}
Python代码实现
class Visitor(object):
def VisitA(self, component):
raise NotImplementedError("abstract")
def VisitB(self):
raise NotImplementedError("abstract")
class Visitor1(Visitor):
def VisitA(self, component):
print "this is visitor1 which is visiting "+component.name+" now."
def VisitB(self, component):
print "this is visitor1 which is visiting "+component.name+" now."
class Visitor2(Visitor):
def VisitA(self, component):
print "this is visitor2 which is visiting "+component.name+" now."
def VisitB(self, component):
print "this is visitor2 which is visiting "+component.name+" now."
class Component(object):
name=""
def Receive(self, visitor):
raise NotImplementedError("abstract")
class ComponentA(Component):
def __init__(self):
self.name="ComponentA"
def Receive(self, visitor):
visitor.VisitA(self)
class ComponentB(Component):
def __init__(self):
self.name="ComponentB"
def Receive(self, visitor):
visitor.VisitB(self)
class ComponentManager(object):
components=[ComponentA(),ComponentB()]
def Receive(self, visitor):
for component in self.components:
component.Receive(visitor)
if __name__ == "__main__":
manager=ComponentManager()
visitor1=Visitor1()
visitor2=Visitor2()
manager.Receive(visitor1)
manager.Receive(visitor2)
本文详细介绍了UML类图的概念及其在实际编程中的应用,并通过Python代码实例展示了如何实现类图中的组件与访问者模式。文章旨在帮助开发者理解和实践面向对象设计中的关键概念。
669

被折叠的 条评论
为什么被折叠?



