入門
ビルダーモードは、複雑なオブジェクトを作成するために使用することができます。ユーザーは、多くの場合、内部の状況を知らない、ビルドプロセスが細かく工法によって制御することができます。名前が示すように、クラスとしてビルドクラスは、各クラスに必要なパラメータおよび組み込み対応するオブジェクトを設定する方法を作成するために、Builderを使用して中間体を作成します。サードパーティのライブラリは、多くの場合、このようなデザインパターンを見ることができます。
利用シナリオ
私たちは、あなたが複数のコンストラクタ、または多くのパラメータを必要とし、パラメータのデフォルト値の多くを持つことができたときに、より複雑なクラスを作成する必要があります。
単純な実装
1つの パッケージorg.sang.bean。 2 3 インポートのjava.math.BigDecimal。 4 インポートjava.util.Objects。 5 6 / ** 7 *构建者模式 8 * / 9 パブリック クラス銀行{ 10 11 プライベート整数bankId。 12 プライベート文字列bankName。 13 プライベート文字列bankCode。 14 民間のBigDecimal bankDiscount。 15 16 公共の整数getBankId(){ 17 リターンbankId。 18 } 19 20 公共 ボイドsetBankId(整数bankId){ 21 この .bankId = bankId。 22 } 23 24 公衆ストリングgetBankName(){ 25 リターンbankName。 26 } 27 28 公共 ボイドsetBankName(文字列bankName){ 29 この .bankName = bankName。 30 } 31 32 公共の文字列getBankCode(){ 33 リターンbankCode。 34 } 35 36 公共 ボイドsetBankCode(文字列銀行コード){ 37 この .bankCode = 銀行コード。 38 } 39 40 公共のBigDecimal getBankDiscount(){ 41 リターンバンク割引。 42 } 43 44 公共 ボイドsetBankDiscount(BigDecimalのバンク割引){ 45 この .bankDiscount = 銀行割引。 46 } 47 48 パブリック 静的 クラスビルダー{ 49 プライベート整数BankID。 50 プライベート文字列bankName。 51 プライベート文字列bankCode。 52 民間のBigDecimal bankDiscount。 53 54 公共Bank.Builder setBankId(整数bankId){ 55 この .bankId = bankId。 56 返す これを。 57 } 58 59 公衆Bank.Builder setBankName(文字列bankName){ 60 この .bankName = bankName。 61 戻り これを。 62 } 63 64 公衆Bank.Builder setBankCode(文字列bankCode){ 65 この .bankCode = bankCode。 66 返す これを。 67 } 68 69 公衆Bank.Builder setBankDiscount(BigDecimalをbankDiscount){ 70 この .bankDiscount = bankDiscount。 71 返す これを。 72 } 73 74 公的銀行ビルド(){ 75 リターン 新しい銀行(本) 76 } 77 } 78 79 @Override 80個の 公共 ブール等しい(オブジェクトo){ 81 場合(これは == O)戻り 真。 82 もし(O == nullを!||はgetClass()= o.getClass())を返す 偽。 83 バンクBANK = (銀行)O。 84 リターン bankId.equals(bank.bankId)&& 85 bankCode.equals(bank.bankCode)。 86 } 87 88 @Override 89 公衆 INT のhashCode(){ 90 リターンObjects.hash(bankId、bankCode)。 91 } 92 93 @Override 94 パブリック文字列のtoString(){ 95 リターン "銀行{" + 96 "bankId =" + bankId + 97 "bankName = '" + bankName + '\'' + 98 」、bankCode = '」 + bankCode + '\'」+ 99 "bankDiscount =" + bankDiscount + 100 '}' 。 101 } 102 103 パブリック銀行(ビルダービルダー){ 104 本。105 この .bankName = builder.bankName。 106 この .bankCode = builder.bankCode。 107 この .bankDiscount = builder.bankDiscount。 108 } 109 110 公共 静的 ボイドメイン(文字列[]引数){ 111 バンクBANK = 新しいBank.Builder() 112 .setBankId(1231 ) 113 .setBankCode( "IBC" ) 114 .setBankDiscount(BigDecimal.valueOf(11 )) 115 .setBankName( "测试の银行") 116 .build()。 117 のSystem.out.println(bank.toString())。 118 } 119 120 }
概要
、我々はそれを忘れてはいけない、動的に構成機能、行動およびその他の構成パラメータを使用するときに非常に便利ですああ利用シナリオをモードを構築します。動的に構成、そしてあなたが考えることができ、このようなケースがあり、ああ、デフォルトの設定があるはずは、モデルを構築するために使用することができる人ではありません