VacationVisitor.cs

class VacationVisitor(Visitor):                 # Visitor::ConcreteVisitor
    def __init__(self):
        self.totalDays = 0
    def visit_Employee(self, emp):      # visit(Employee emp)
        self.totalDays += emp.vacDays
    def visit_Boss(self, bos):          # visit(Boss bos)
        self.totalDays += bos.vacDays

《Note》参考文献との違い

  • 引数の型で処理を選択する代わりに、メソッド名に実行時の型情報を埋め込みます。