加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 没有instanceof的Typesafe委派

发布时间:2020-12-15 08:41:11 所属栏目:Java 来源:网络整理
导读:我有一个服务程序: filter(ListCriterion criteria); 是否有一种很好的方法可以将方法调用内部分派给特定Criteria的类型安全实现,而不涉及instanceof且不会使API混乱. 我喜欢以下的东西(虽然自然不起作用): filter(ListCriterion criteria) { for (Criteri
我有一个服务程序:

filter(List<Criterion> criteria);

是否有一种很好的方法可以将方法调用内部分派给特定Criteria的类型安全实现,而不涉及instanceof且不会使API混乱.

我喜欢以下的东西(虽然自然不起作用):

filter(List<Criterion> criteria) {
   for (Criterion c : criteria) {
       dispatch(c);
   }
 }

dispatch(FooCriterion c) {...}
dispatch(BarCriterion c) {...}

解决方法

虽然它可能被视为混乱,但可以使用类似访问者模式(使用双重调度原理):

public class Dispatcher {
    void dispatch(FooCriterion foo) { .. }
    void dispatch(BarCriterion bar) { .. }
}

class FooCriterion implements Criterion {
   void visit(Dispatcher d) {
      d.dispatch(this);
   }
}

Dispatcher d = new Dispatcher();
for (Criterion c : criteria) {
   c.visit(d);
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读