Dengan asumsi situasi semacam konstruktor: Saya sering memilih pola pembangun yang fasih untuk mencegah situasi dengan banyak pilihan.
Misalnya. Ordering.natural().onResultOf(function).reverse().compound(Ordering.natural().onResultOf(function2))
adalah contoh memanggil antarmuka pembangun yang lancar diimplementasikan di Guava.
Tentu saja Anda sekarang memerlukan objek terpisah untuk menahan keadaan pembangun Anda, tetapi Anda mengurangi kerumitan keseluruhan dengan memisahkan perilaku membangun dari perilaku yang dibangun.