Java基础:Java链式编程小记

  链式编程可以点点点出属性,通过返回对象本身(this)可以调用本身的属性。
  一般在创建对象并给属性赋值时使用。
  这种方式使用会越来越多,很多Apache工具如HttpClient里给RequestConfig赋值,JDK里面有些类或方法也使用,如:StringBufferappend()方法。

个人认为的优点:

  1. 易于编程(编程性强),易于理解(阅读性强)。
  2. 代码简洁清爽。属性多时赋值不会看到一堆感觉较low很多行的对象引用调set方法。
    两者的本质并什么区别;但在代码程面只要有一点优化,也是一种好方法好思路,也是更先进的,值得推广和使用。
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    public class User {

    private String name;
    private String nickName;
    private int age;
    private String address;
    private String phoneNum;

    public String getNickName() {
    return nickName;
    }
    public User setNickName(String nickName) {
    this.nickName = nickName;
    return this;
    }
    public String getAddress() {
    return address;
    }
    public User setAddress(String address) {
    this.address = address;
    return this;
    }
    public String getPhoneNum() {
    return phoneNum;
    }
    public User setPhoneNum(String phoneNum) {
    this.phoneNum = phoneNum;
    return this;
    }
    public String getName() {
    return name;
    }
    public User setName(String name) {
    this.name = name;
    return this;
    }
    public int getAge() {
    return age;
    }
    public User setAge(int age) {
    this.age = age;
    return this;
    }

    @Override
    public String toString() {
    return "User [name=" + name + ", nickName=" + nickName + ", age=" + age + ", address=" + address + ", phoneNum="
    + phoneNum + "]";
    }
    public static void main(String[] args) {
    User user = new User()
    .setAge(22)
    .setName("张三")
    .setAddress("xxxxx")
    .setNickName("san er")
    .setPhoneNum("13688889999");
    System.out.println(user);
    }
    }
作者

光星

发布于

2018-03-26

更新于

2022-06-17

许可协议

评论