public static void main(String[] args) {
text();
}
private static void text()
{
Text text = new Text.Builder()
.setTitle("Hello")
.setContent("Name")
.setItems()
.build();
System.out.println(text);
}
타이틀 : Hello
내용 : Name
항목 :
- null
.을통해서 계속 값을 추가하고 설정하는 방법에 대해서 알아보자먼저 Text클래스를 생성해주고 반환을 할 문자열과 이를 출력해줄 toString()을 생성해준다
public class Text {
private String text;
@Override
public String toString() {
return text;
}
}
단지 Text의 클래스 내부에 존재해서 접근시 Text.Builder로 접근할 뿐 하나의 클래스로 취급한다
public static class Builder {
private String title;
private String content;
private Optional<String[]> items = Optional.empty();
public Builder setTitle(String title){
}
public Builder setContent(String content) {
}
public Builder setItems (String ... items) {
}
public Text build() {
}
}
이제 처음 메인함수의 모습처럼 Text.Builder를 통해 메소드에 접근이 가능해졌고 .을 이어 붙임으로서 원하는 출력 및 값을 가지도록 구현
public static class Builder {
private String title;
private String content;
private Optional<String[]> items = Optional.empty();
public Builder setTitle(String title){
this.title = title;
return this;
}
public Builder setContent(String content) {
this.content = content;
return this;
}
public Builder setItems (String ... items) {
if (items.length > 0)
this.items = Optional.of(items);
else
this.items = Optional.empty();
return this;
}
//메소드를 모두 구현 후 구현된 메소드를 통해 얻은 값을 출력하는 최종메소드
public Text build() {
Text Text = new Text();
String*Builder* <--- Builder형식이다.
닷(.)을 통해 값을 append()하는 방식으로 구현되는 문자열 처리 클래스처럼
현재 메소드 또한 이런 방식을 통해 만드는 것이다
StringBuilder sb = new StringBuilder();
sb.append("타이틀 : ").append(title).append("\n");
sb.append("내용 : ").append(content).append("\n");
sb.append("항목 : ").append("\n");
if (items.isEmpty())
sb.append(" - ").append("null").append("\n");
else {
for (String item : items.get())
sb.append(" - ").append(item).append("\n");
}
Text.text = sb.toString();
return Text;
}
}
Text클래스를 통해 원하는 출력 형식의 문자열을 생성할수 있게된다