2017-03-21 10 views
-1

流暢な建築業者が歓迎されています。流暢な建築業者を拡張するには、どのような可能性がありますか?

class User { 
    String name; 
    void setName(String name){ 
     this.name= name; 
    } 

    List<String> nicknames; 
    void setNicknames(List<String> nicknames){ 
     this.nicknames= nicknames; 
    } 
} 

については

iは、ビルダークラスの拡張は、単一のニックネームのセッターのような便利です

UserBuilder.update(user).withName("Jonathan").withNicknames(Arrays.asList(new String[]{"Jonny", "Jon"})); 

を書くためにビルダークラスを使用することができますか?ニックネーム

Builder withNicknames(String nickname){ 
    get().nicknames.add(nickname); 
    return this; 
} 
+0

のような条件での1によってevereyセッターを拡張します([Immutables]で見たいと思うかもしれませんhttp://immutables.github.io/)フレームワーク。それが作成する値オブジェクトにはたくさんの素敵な機能を持つビルダーがあります –

+0

この質問とその答えは何も追加しません。これは、主に意見に基づくものであり、非常にユースケースに基づくもので、どのような方法が理にかなっています。 – luk2302

答えて

0

追加セッターが

UserBuilder withName(String name){ 
    return withName(true, name); 
} 

UserBuilder withName(boolean condition, String name){ 
    if (condition){ 
     get().setName(name); 
    } 
    return this; 
} 
0

のようなコレクションのメンバーのための単一の値の

class UserBuilder { 
    private User user; 
    static UserBuilder update(User user){ 
     UserBuilder userBuilder = new UserBuilder(); 
     userBuilder.user = user; 
     return userBuilder; 
    } 

    User get(){ 
     return user; 
    } 

    UserBuilder withName(String name){ 
     get().setName(name); 
     return this; 
    } 

    List<String> nicknames; 
    UserBuilder withNicknames(List<String> nicknames){ 
     get().setNicknames(nicknames); 
     return this; 
    } 
} 
関連する問題