bVacationVisitor.cs

class bVacationVisitor(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
        self.totalDays += bos.bonusDays

《Note》参考文献との違い

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