ジェネレータモード

16879 ワード

Main関数

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;
    }
}
Builderクラスをテキストの静的内部クラスとして作成
Textのクラス内部にのみ存在し、アクセス時にTextを使用します.ジェネレータとしてのみアクセスし、クラスとして扱う
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;
    }
}

n/a.結論


Textクラスで必要な出力フォーマットの文字列を生成できます