υϝΠϯϞσϧͷྫ w νϟοτϧʔϜ୭ͷͷͰͳ͍ڞ༗Ͱ͋Δɻ୭Ͱ ཧऀʹͳΕΔՄೳੑ͕͋Δ͕ɺطଘͷཧऀʹΑͬͯՃ· ͨڐՄ͞Εͳ͚ΕͳΒͳ͍ɻ w ڞ༗Ͱ͋Δ͕ɺཧऀ࠷Ͱਓ͍ͳ͚ΕͳΒͳ ͍ɻ w νϟοτʹࢀՃ͍ͯ͠ΔϢʔβϝϯόʔͱݺΕΔɻϝϯ όʔͰͳ͍ͱൃݴ͕Ͱ͖ͳ͍ɻ w ཧऀϝϯόʔΛՃͰ͖Δɻެ։νϟοτϢʔβ͕ࢀ ՃΛਃͰ͖ɺཧऀʹΑͬͯڐՄ͞Εͨ߹ʹ ུɻ w ߘ͞ΕͨϝοηʔδɺνϟοτϧʔϜ͕ॴ༗͠ɺϝϯόʔ ୭ͰಡΉ͜ͱ͕Ͱ͖Δɻ
υϝΠϯϞσϧͷ༗༻ੑ w υϝΠϯϞσϧ ʹର͢Δߟ͑ํ ͱઃܭ ڧ͍૬ޓิؔʹ͋Δɻ w υϝΠϯϞσϧརؔऀશһͰར༻Ͱ͖Δ ڞ௨ݴޠج൫ɻ w υϝΠϯϞσϧʹ༻ޠͷબ֓೦ಉ࢜ͷؔ ࿈͔Βબ͕͋ΓɺͦΕࣗମ͕ղܾͷͨΊ ͷઓུΛද͍ͯ͠Δɻ w ίϯλΫτϢʔβͷͭͳ͕ΓΛ͕ࣔ͢ɺϑΝ ΠϧλεΫͱ͕ؔͳ͍ͳͲɻ
ιϑτΣΞͷίΞ w ιϑτΣΞͷ֩৺ɺυϝΠϯʹ͋Δɻ w υϝΠϯ্ͷղܾʹɺϞσϦϯάεΩϧʹਫ਼௨͢Δ ͜ͱ͕ٻΊΒΕΔɻ͔͠͠ɺҰൠతʹ΄ͱΜͲͷ։ൃऀ͕ ϞσϦϯάεΩϧΑΓٕज़ࢦͰ͋Γɺٕज़ͰυϝΠϯ্ ͷΛղܾ͢ΔͷͰ͏·͍͔͘ͳ͍ɻ w Ұൠతʹɺ͍ͯ҆͘༌ૹۀऀͷίΞͱͳΔυϝΠϯͰ ɺٕज़తͳܦ࿏ܭࢉΞϧΰϦζϜ άϥϑΞϧΰϦζϜ
ࣗମʹڝ૪ྗͷݯઘͱͳΔՁ͕͋ΔΘ͚Ͱͳ͍ ڝ߹ ಉ͡ΞϧΰϦζϜΛ͏Մೳੑ͕͋ΔͨΊ ɻͦΕΛར ༻ͯ͠༌ૹۀऀͱͯ͠ͷతΛ͍͔ʹୡ͢Δ͔ͷํ๏ ͷํ͕Ձ͕ߴ͍ɻ w ෳࡶ͞ʹཱ͔ͪ͏ʹɺυϝΠϯʹΛ͚Δ͜ͱɻ
ΦʔόʔϒοΩϯάͷ w ༌ૹۀքͷඪ४తͳ׳शͱͯ͠ɺճͷߤւͰͦͷધഫ͕ ӡൖͰ͖ΔྔΑΓଟ͘ͷ՟Λड͚͚Δɻ͜ΕΛΦʔ όʔϒοΩϯάͱ͍͏ɻ w ͨͱ͑ɺऩ༰ೳྗͷΛ༧Ͱ͖ΔΑ͏ʹ͢Δ ͳͲɺओཁސ٬ಛఆͷ՟Λ༏ઌͯ͠ɺΑΓෳࡶͳ ϧʔϧΛద༻͢Δ߹͋Δ w ༌ૹۀքͰ୭Ͱ͍ͬͯΔ͕ࣝͩɺ։ൃऀશһ͕ Ѳ͍ͯ͠ΔͱݶΒͳ͍ɻཁٻఆٛॻʹɺzͷ ΦʔόʔϒοΩϯάΛೝΊΔzͷҰจ͕ॻ͔Ε͍ͯΔ
҉తͳ͕ࣝӅΕ͍ͯΔ w ։ൃऀ͕खॿ͚ͯ͠υϝΠϯΤΩεύʔτ͕ίʔυΛಡΜͰɺϧʔ ϧ͕ਖ਼͍͔͠ΛݕূͰ͖ͦ͏ʹͳ͍ ӳޠؤுΖ͏ɻ·ͣຊޠ Ͱڞ௨ݴޠͰձ͕Ͱ͖Δఔ͕ඞཁ ɻ w Ϗδωεʹ͍ͭͯΒͳ͍ٕज़ऀ͕ɺཁٻఆٛॻͷهड़Λίʔυ ͷهड़ͱ݁ͼ͚ͭΔ͜ͱ͕͍͠ ͋ͨ͞͠Γͪ͜Βͷํ͕ਂࠁ ɻ w ϧʔϧ͕͞ΒʹෳࡶʹͳΔͱ͕͞ΒʹෳࡶʹͳΔɻ
Ӆ͞Εͨ֓೦ΛܗࣜԽ͢Δ w ΦʔόʔϒοΩϯάΛ୯ͳΔΘ͔Γʹ͍͘ܭࢉͱ͢ΔͷͰͳ͘ɺ ໌֬ͰॏཁͳϏδωεϧʔϧͩͱཧղ͢ΔΑ͏ʹ͢Δɻ w ։ൃऀυϝΠϯΤΩεύʔτʹυϝΠϯίʔυʹରԠٕͨ͠ज़ తͳՌΛݟͤΔ͜ͱ͕Ͱ͖Δɻͦ͏͢Δ͜ͱͰϑΟʔυόο Ϋϧʔϓ͕Ͱ͖͕͋Δ ӳޠؤுΖ͏ ɻ
w ௨༁͢Δ͜ͱͰυϝΠϯϞσϧͷ֓೦Λࠞཚͤͯ͞͠ ·͏ɻͦΕ͕ίʔυͷഁյతͳϦϑΝΫλϦϯάʹͭ ͳ͕Δɻ w ༷ʑͳνʔϜϝϯό͕༻ޠΛผͷҙຯͰ͍ͳ͕Βɺ ͦͷ͜ͱΛೝࣝͯ͠ͳ͍ͱɺ߹ੑͷͱΕ͍ͯͳ͍ɺ ৴པͰ͖ͳ͍ιϑτΣΞ͕Ͱ͖͕͋Δɻ w ௨༁ʹ͔͔Δίετͷ͍ͤͰɺࣝͱߟ͑ํʹؔ͢Δ ަྲྀ͕͛ΒΕΔ͕ɺ͜ͷަྲྀ͕ͦ͜Ϟσϧʹର͢Δ ਂ͍ಎΛ༩͑Δɻ
w ޡղͷϦεΫΛ͑ΔͨΊʹɺڞ௨ݴޠΛج൫ͱ͢Δɻ ͜ͷݴޠνʔϜͷ࡞ۀͷ͍ͨΔͱ͜Ζʹଘࡏ͢Δɻ w ϢϏΩλεݴޠʹɺΫϥεϝιουɺϓϩύςΟ ͷ໊લϧʔϧؚ͕·ΕΔɻ։ൃऀؒͰར༻͞Εɺγ εςϜ͚ͩͰͳ͘ɺλεΫػೳΛهड़͢ΔͨΊʹ ར༻͞ΕΔɻ w ։ൃऀͱυϝΠϯΤΩεύʔτ͕͓ޓ͍ʹҙࢥૄ௨Λ ͢Δࡍʹར༻͞ΕΔɻυϝΠϯΤΩεύʔτಉ͕࢜ ཁ݅։ൃܭըɺ͋Δ͍ػೳΛ͑߹͏ࡍʹར༻ ͞ΕΔɻ w Ұͷ௨༁Λෆཁ͠ɺυϝΠϯʹର͢ΔཧղΛΑΓε Ϝʔζͳͷͱ͢Δɻ
w ੳɾઃܭɾ࣮୯ҰͷϞσϧʹΑͬͯۦಈ͢ Δɻͭ·Γɺઃܭ͕ίʔυͰ͋Γɺίʔυ͕ઃܭͰ ͋Δͱ͍͏ঢ়ଶΛ࡞Γग़͢ɻ͜ΕʹΑͬͯɺઃܭͷ ؒҧ͍Λൃݟ͢Δ͜ͱ͕Ͱ͖Δɻ w ࣮ΛϞσϧʹ݁ͼ͚ͭΔͨΊʹɺ௨ৗɺΦϒδΣ ΫτࢦϓϩάϥϛϯάͷΑ͏ͳύϥμΠϜΛར༻ ͢Δɻ w ؔܕཧܕͳͲΛࠞ߹ͨ͠ύϥμΠϜͰΑ ͍͕ɺओ࣠001ɻͦΕ։ൃऀͷ҆ఆͨ͠ ։ൃڥʹґଘ͍ͯ͠Δɻͦ͏͍͏ҙຯͰɺ 4DBMB001ͱ'1ͷ྆ํͰϞσϦϯάͷબࢶΛ ͛ΒΕΔɺݱ࣮తͳϓϥοτϑΥʔϜͱ͍͑Δɻ
ޱ࠲ͷϢϏΩλεݴޠͷྫ w ޱ࠲ʹݱۚͰೖग़ۚͰ͖Δ w ͨͩ͠ɺߴθϩະຬʹͳͬͯͳΒͳ͍ɻ w ޱ࠲ଞͷޱ࠲ʹग़ۚɺ͘͠ଞͷޱ࠲͔Β ೖۚͰ͖Δɻ w ޱ࠲ͷߴΛ֬ೝͰ͖Δ w ͓ۚଞͷ͓ۚΛՃݮࢉͰ͖Δɻݮࢉෛͷྔ ΛՃࢉ͢ΔҙຯͰΑ͍ɻ w ͨͩ͠ɺಉҰޱ࠲ͳ͍Ͱɺಉ͡௨՟୯ҐͷΈ Λѻ͏
ޱ࠲υϝΠϯΦϒδΣΫτͷ੍ @Value public final class BankAccount { // தུ public static BankAccount of(Long id, List events) { if (getTotalAmountByEvents(events).isLessThan(Money.zero())) { throw new IllegalArgumentException("total amount is less than zero!"); } return new BankAccount(id, events); } // தུ } ޱ࠲ͷߴθϩະຬʹͳͬͯͳΒͳ͍
͓ۚͷϢϏΩλεݴޠͷྫ w ͓ۚ୯ͳΔʁ-POH w Ճݮࢉ
w ݫີʹɺʹ͓ۚͰͳ͍ͷͰʁ࣮ࡍʹίʔυ Ͱ-POHΛΈ͓͔ͯۚͲ͏͔Θ͔Βͳ͍ɻυϝΠϯ ্ͷ֓೦Λ࣮ʹඥ͚ΒΕ͍ͯͳ͍Մೳੑ͕͋Δɻ w ྫ͑ɺl͓ۚͱɺ௨՟ͷ୯ҐͱྔΛද͢ͷͰ͋Δz ͱ͍͏ϢϏΩλεݴޠΛ࡞Γ্͛Δɻ͓ۚͷྔ ͰΑ͍ͱ͢Δɻ
͓ۚυϝΠϯΦϒδΣΫτͷ͍ํ Money money1 = Money.of(10000); Money money2 = Money.of(10000); Money result = money1.plus(money2); if (result.isLessThan(Money.zero())) { System.out.println("result is less than zero!"); } System.out.println(result);
Money data = new Money(); data.setCurrency(bankAccount1.getEvents().get(0).getAmount().getCurrency()); data.setAmount(BigDecimal.valueOf(10000)); // ޱ࠲ؒૹۚΛߦ͏ BankAccountService.Result result = BankAccountService.moveData( bankAccount1, bankAccount2, data );
·ͱΊ w ෳࡶͳγεςϜɺυϝΠϯϞσϧΛίΞʹ͢Δ w ίϛϡχέʔγϣϯɺڞ௨ݴޠج൫Ͱ͋ΔϢϏ ΩλεݴޠΛ༻͍Δ w ৫ͱγεςϜͷڥքΛҙࣝ͢ΔͨΊʹɺڥքͮ ͚ΒΕͨίϯςΩετΛ༻͍Δ w υϝΠϯϞσϧΛ࣮ʹඥ͚ΔͨΊͷɺ୯Ұͷ ϞσϧΛ༻͍Δ w ࣮ફతʹɺϢʔβετʔϦϚοϐϯά*$0/*9 Λ༻͍Δ