今朝 Twitter で Visitor パターンによるダブルディスパッチの話題を見かけたので、そういや昔 Java でちろっと使ったことあったなーとどんなんだったか思い出してみました。 要件 確かこんなのを表現したかったんです。業務アプリでよくありがちな、業務実行可否判定ですね。実際にはもっとパターンが多くなると思います。 業務 エライ人 ヒラ 申請 不可 可 承認 可 不可 実装 とりあえずベタに書くとこんなんでしょうか。 // 役割 public enum Role { エライ, ヒラ; } // 業務 public interface Work { boolean isExecutableBy(Role role); } 業務を実装するとこんな感じ。 // 申請 public class Request implements Work { @Override public bool