fluent编程风格

在看zookeeper过程中,看到Curator客户端工具,在创建Zookeeper client 的过程中,使用了fluent风格的编码。对我来说这个是新的概念,那么什么是fluent设计风格呢,让我们来看看!

创建client 示例1

Curator创建示例.png

创建示例2

Google Collections中的MapMaker是个不错的示例:

ConcurrentMap graphs = new MapMaker()
.concurrencyLevel(32)
.softKeys()
.weakValues()
.expiration(30, TimeUnit.MINUTES)
.makeComputingMap(
    new Function() {
        public Graph apply(Key key) {
            return createExpensiveGraph(key);
        }
      });

由此可见,使用Fluent Interface:Fluent Interface可以使代码更短,更容易编写。

原先创建和赋值是这么写:
The most common way I see this kind of thing built up is like this:

private void makeNormal(Customer customer) {
    Order o1 = new Order();
    customer.addOrder(o1);
    OrderLine line1 = new OrderLine(6, Product.find("TAL"));
    o1.addLine(line1);
    OrderLine line2 = new OrderLine(5, Product.find("HPK"));
    o1.addLine(line2);
    OrderLine line3 = new OrderLine(3, Product.find("LGV"));
    o1.addLine(line3);
    line2.setSkippable(true);
    o1.setRush(true);
}

以后可以这么写:

private void makeFluent(Customer customer) {
    customer.newOrder()
            .with(6, "TAL")
            .with(5, "HPK").skippable()
            .with(3, "LGV")
            .priorityRush();
}

关于这种风格可能最重要的一点是,其目的是按照内部的域特定语言来做一些事情 。引自:,有兴趣的可以看看。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,923评论 18 139
  • [TOC] Zookeeper客户端Curator使用详解 前提 维护多个博客比较麻烦,简书和博客园放弃维护,后续...
    zhrowable阅读 85,995评论 23 116
  • 这两天在尹建莉课堂看到了一句话:家长没脾气,才有好教育!看完感同身受,真的是这样的,特别是在我们家孩子身上更...
    风yiyangde阅读 241评论 0 0
  • “这真是神奇的一天,我还像平常一样,认真细致的画个妆,匆忙的奔出小区赶班车。 今天是公司的半年总结会,班车上坐满了...
    钱饭饭阅读 307评论 0 0
  • 微波涟漪碎花,折柳黄河静静地躺在大地与午间的阳光诉说那昔日苦难的过去 有谁的日子洒满五彩仿佛永远,看着母亲的针线秀...
    郭安安阅读 385评论 16 22