Method chaining - Wikipidea : http://en.wikipedia.org/wiki/Method_chaining

자바 7에 추가될뻔한 기능이었다고 한다. ^^; 자바의 빈클래스에 막 길들어지기 시작한 내게는 조금 낯선 형태랄까?
setter 메소드에서 클래스(this)를 리턴해주는 형태니까...

Chaining.java

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
public class DateChaining {
 
    private String year;
    private String month;
    private String day;
     
    public String getMonth() {
        return month;
    }
 
    public DateChaining setMonth(String month) {
        this.month = month;
        return this;
    }
 
    public String getDay() {
        return day;
    }
 
    public DateChaining setDay(String day) {
        this.day = day;
        return this;
    }
 
    public String getYear() {
        return year;
    }
 
    public DateChaining setYear(String year) {
        this.year = year;
        return this;
    }
 
    @Override
    public String toString() {
        return "DateChaining [year=" + year + ", month=" + month + ", day="
                + day + "]";
    }
 
}

ChainingTest.java
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
package test;
 
import main.DateChaining;
import static org.junit.Assert.*;
import static org.hamcrest.CoreMatchers.*;
 
import org.junit.Test;
 
public class ChainingTest {
     
    @Test
    public void 체이닝_테스트() {
        //given
        DateChaining chain = new DateChaining();
        //when
        chain.setYear("2011").setMonth("07").setDay("17");
        //then
        assertThat(chain.getYear(), is("2011"));
        assertThat(chain.getMonth(), is("07"));
        assertThat(chain.getDay(), is("17"));
    }
     
    @Test
    public void 순서흐트러진_체이닝_테스트() {
        //given
        DateChaining chain = new DateChaining();
        //when
        chain.setMonth("07").setDay("17").setYear("2011");
        //then
        assertThat(chain.getYear(), is("2011"));
        assertThat(chain.getMonth(), is("07"));
        assertThat(chain.getDay(), is("17"));
    }
     
    @Test
    public void 중복된_필드에대한_세트선언시() {
      //given
        DateChaining chain = new DateChaining();
        //when
        //
        chain.setYear("2011").setMonth("07").setDay("17").setYear("2012");
        //then
        assertNotSame(chain.getYear(), is("2011"));
        assertThat(chain.getMonth(), is("07"));
        assertThat(chain.getDay(), is("17"));
    }
}
이렇게 쓰는 것에 낯설기는 하지만... 익숙하게 사용했을때 어떤 장점이 있는지 확인해보고 익혀두는 것도 나쁘지 않겠다.


출처 - http://java.ihoney.pe.kr/175




'Development > Java' 카테고리의 다른 글

java - xml 읽고 쓰기  (1) 2012.10.22
java - java 7 새로운 기능 및 특징  (2) 2012.10.20
java - Timer 및 TimerTask Class  (0) 2012.10.06
java - 가비지 컬렉션(Garbage Collection)  (0) 2012.10.05
jdom - xmlns, xsi 설정  (0) 2012.10.04
Posted by linuxism
,