Fluent Interface基础介绍

在软件工程中,Fluent Interface(由埃里克·埃文斯和马丁·福勒(Martin Fowler)首创)是构建面向对象的API的一种方法,其中源代码的可读性接近普通书面散文。
 

流畅的接口通常通过使用方法级联(具体地方法链接)来中继后续调用的指令上下文来实现(但是流畅的接口不仅仅需要方法链接[1])。 一般来说,上下文是
 

  • 通过调用方法的返回值定义
  • 自我参照,其中新的上下文等同于最后的语境
  • 通过返回一个空白上下文来终止。


“Fluent Interface”这个术语是在2005年底创造出来的,尽管这种整体界面风格可以追溯到20世纪70年代的Smalltalk的方法级联发明,也是20世纪80年代的很多例子。 一个常见的例子是C ++中的iostream库,它使用<<或>>操作符来传递消息,将多个数据发送到同一对象,并允许“操纵器”用于其他方法调用。 其他早期的例子包括Garnet系统(从1988年在Lisp)和Amulet系统(从1994年在C ++),它使用这种风格进行对象创建和属性分配。
 



JavaScript 例子:
 

有很多JavaScript库的例子使用了一些这样的变体:jQuery可能是最知名的。 通常,流利的构建器用于实现“数据库查询”,例如在https://github.com/Medium/dynamite中:
 

// getting an item from a tableclient.getItem('user-table')    .setHashKey('userId', 'userA')    .setRangeKey('column', '@')    .execute()    .then(function(data) {        // data.result: the resulting object    })  在JavaScript中这样做的一个简单方法是使用原型继承和“this”:
  
  
// example from http://schier.co/post/method-chaining-in-javascript// define the classvar Kitten = function() {  this.name = 'Garfield';  this.color = 'brown';  this.gender = 'male';}; Kitten.prototype.setName = function(name) {  this.name = name;  return this;}; Kitten.prototype.setColor = function(color) {  this.color = color;  return this;}; Kitten.prototype.setGender = function(gender) {  this.gender = gender;  return this;}; Kitten.prototype.save = function() {  console.log(    'saving ' + this.name + ', the ' +    this.color + ' ' + this.gender + ' kitten...'  );   // save to database here...   return this;}; // use itnew Kitten()  .setName('Bob')  .setColor('black')  .setGender('male')  .save();



Java

The jOOQ 项目把 SQL 的调用, 做成Fluent API的风格:


Author author = AUTHOR.as("author");create.selectFrom(author)      .where(exists(selectOne()                   .from(BOOK)                   .where(BOOK.STATUS.eq(BOOK_STATUS.SOLD_OUT))                   .and(BOOK.AUTHOR_ID.eq(author.ID))));




免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删

QR Code
微信扫一扫,欢迎咨询~

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 155-2731-8020
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

手机不正确

公司不为空