1. 程式人生 > >java 鏈式呼叫

java 鏈式呼叫

前言

現在很多開源庫或者程式碼都會使用鏈式呼叫。因為鏈式呼叫在很多時候,都可以使我們的程式碼更加簡潔易懂。以下 Student 類有多數個屬性,讓我們看看非鏈式呼叫和鏈式呼叫有何區別。

非鏈式呼叫

Main 類:

    /**
     * Created by chenxuxu on 17-1-10.
     */
    public class Main {
        public static void main(String[] args) {
            Student stu = new Student();
            stu.setAge(22
); stu.setName("chenxuxu"); stu.setGrade("13級"); stu.setNo("123456789"); stu.setMajor("軟體工程"); } }

Student 類:


    /**
     * 學生類
     * 
     * Created by chenxuxu on 17-1-10.
     */
    public class Student {
        /**
         * 姓名
         */
private String name; /** * 年齡 */ private int age; /** * 學號 */ private String no; /** * 年級 */ private String grade; /** * 專業 */ private String major; //...此處省略getter&setter
}

鏈式呼叫

Main 類:

    /**
     * Created by chenxuxu on 17-1-10.
     */
    public class Main {
        public static void main(String[] args) {
            Student.builder()
            .stuName("chenxuxu")
            .stuAge(22)
            .stuGrade("13級")
            .stuMajor("軟體工程")
            .stuNo("123456789");
        }
    }

Student 類:


    /**
     * 學生類
     * 
     * Created by chenxuxu on 17-1-10.
     */
    public class Student {
        /**
         * 不能通過new初始化
         */
        private Student(){}

        public static Builder builder(){
            return new Builder();
        } 

        static class Builder{
            /**
             * 姓名
             */
            private String name;
            /**
             * 年齡
             */
            private int age;
            /**
             * 學號
             */
            private String no;
            /**
             * 年級
             */
            private String grade;
            /**
             * 專業
             */
            private String major;

            public Builder stuName(String name){
                this.name = name;
                return this;
            }

            public Builder stuAge(int age){
                this.age = age;
                return this;
            }

            public Builder stuNo(String no){
                this.no = no;
                return this;
            }

            public Builder stuGrade(String grade){
                this.grade = grade;
                return this;
            }

            public Builder stuMajor(String major){
                this.major = major;
                return this;
            }
        }

    }

結論

通過鏈式呼叫後,程式碼看起來簡潔易懂。