连贯接口(方法链)的使用 推荐
2014-05-27 19:53
316 查看
连贯接口(fluent interface),有时候也会叫做方法链(链式调用),可以起到简化编码的作用,同时保持对象间的贯通一致。
所谓的连贯接口/方法链,在平时编程中,也比较常见,下面举几个小例子:
hibernate 里方法链的编程风格:
java 里 json 的操作:
dom4j 里的链式操作:
jquery 的链式调用:
例子还有很多,大家可以多点积累,下面讲一下连贯接口的设计要点:
1)相关方法或属性方法的设计中,只有输入参数或者无参数。
2)每个连贯方法的返回值都是一个类型实例,但不要求返回自身。
一个小小的示例:
附:
1、连贯接口的使用,一般来说在设置基本类型数据时,都是没有问题的.可对于设置对象,处理不好,可能会出现空指针错误,在 hibernate 的 javabean 里使用连贯接口,就有可能出现这种问题了(设置了一个引用对象).
2、连贯接口可以应用在很多地方,在设计模式中,我所知道的一种就是应用于责任链模式。
所谓的连贯接口/方法链,在平时编程中,也比较常见,下面举几个小例子:
hibernate 里方法链的编程风格:
List results = session.createQuery("from users u order by u.age asc")
.setFirstResult(10)
.setMaxResutls(10)
.list();
java 里 json 的操作:
JsonGenerator jsonGen = Json.createGenerator(swriter);
jsonGen.writeStartObject()
.write("type", "chat")
.write("from", chatMessage.getFrom())
.write("fromName", chatMessage.getFromName())
.write("to", chatMessage.getTo())
.write("targetName", chatMessage.getTargetName())
.write("message", chatMessage.getMessage())
.writeEnd();
jsonGen.close();
dom4j 里的链式操作:
Element chatMessage = chatMessages.addElement("chatMessage")
.addAttribute("fromUserId","1")
.addAttribute("fromName", "tianya")
.addAttribute("toUserId", "haijiao");
jquery 的链式调用:
//注意这样做,只是为了演示,可根据实际情况来调整
$(‘#id’).show().hide().show().hide().show().hide();
例子还有很多,大家可以多点积累,下面讲一下连贯接口的设计要点:
1)相关方法或属性方法的设计中,只有输入参数或者无参数。
2)每个连贯方法的返回值都是一个类型实例,但不要求返回自身。
一个小小的示例:
public class User {
private String name;
private String password;
private int age;
public String getName() {
return name;
}
public User setName(String name) {
this.name = name;
return this;
}
public String getPassword() {
return password;
}
public User setPassword(String password) {
this.password = password;
return this;
}
public int getAge() {
return age;
}
public User setAge(int age) {
this.age = age;
return this;
}
@Override
public String toString() {
return "[name:"+name+" password:"+password+" age:"+age+"]";
}
public static void main(String[] args) {
User user = new User();
user.setName("tianya").setPassword("123456").setAge(22);
System.out.println(user);//输出:[name:tianya password:123456 age:22]
}
}
附:
1、连贯接口的使用,一般来说在设置基本类型数据时,都是没有问题的.可对于设置对象,处理不好,可能会出现空指针错误,在 hibernate 的 javabean 里使用连贯接口,就有可能出现这种问题了(设置了一个引用对象).
2、连贯接口可以应用在很多地方,在设计模式中,我所知道的一种就是应用于责任链模式。
相关文章推荐
- 连贯接口(方法链)的使用
- Mcad学习笔记之异步编程(AsyncCallback委托,IAsyncResult接口,BeginInvoke方法,EndInvoke方法的使用小总结)
- Mcad学习笔记之异步编程(AsyncCallback委托,IAsyncResult接口,BeginInvoke方法,EndInvoke方法的使用小总结)
- C#3.0 中使用扩展方法来扩展接口
- C#3.0 中使用扩展方法来扩展接口
- C#3.0 中使用扩展方法来扩展接口
- PB内置OEACLE数据库接口的使用方法
- dwr 使用接口作方法的参数
- C#3.0 中使用扩展方法来扩展接口
- Java中使用接口实现多继承和多态的方法
- 使用SQLDMO中“接口SQLDMO.Namelist 的 QueryInterface 失败”异常的解决方法
- Mcad学习笔记之异步编程(AsyncCallback委托,IAsyncResult接口,BeginInvoke方法,EndInvoke方法的使用小总结)(转载)
- Delphi中Hash表的使用方法! 推荐
- c#接口使用方法
- c#接口使用方法
- 使用SQLDMO中“接口SQLDMO.Namelist 的 QueryInterface 失败”异常的解决方法
- 《Effective C#》Item 19:推荐在继承中使用接口
- c#接口使用方法
- 使用扩展方法和接口给对象添加“重置状态”功能
- dwr 使用接口作方法的参数