oソフトウェアは、Financeiros、マーティンFowler、アンクルボブEアレクサンダーハミルトンT M M Mコム?
19414 ワード
エンタープライズアプリケーションアーキテクチャのcomo disse Martin fowler no artigo sobreパターン
https://martinfowler.com/eaaCatalog/money.html):
BOMは、企業のアプリケーションアーキテクチャのEUÑo oのパターンは、MAS SEI que El Sugereは、実装者の残高Oデデマスタークラッセのお金は、COMのアトリエの通貨の量は、Beam como umのmのtodoを割り当てます.NesseアーティゴーVou Mostrar comoの実装のnossoマネーpraのリゾルバumの問題の実de perdaデcentavos em rateio、becomoリゾルバoミストes rio do t tulo.
J . t . t nhamos uma classe money , o que facou muito na escritaはマネーパターンを行う.ENTは、o o se eu puderターAを前払いします.Construa seu valueオブジェクト.デポスデターワレスは、Financeiros Esppalhados por todo seu sistema、vai ser bem difを口外します.
NSSA Classse Money N ' s o To O O Atbuto Currency Pois N ' s o Temos A Internationionioniza Splialo - O , Pero Menos n - Astro O Aindaの必要性E ' n ' o o vo - vamos - terの実装者は、通貨の単位である.アッシムcomo Tamb m m n o o tはnhamos o mをtodo割り当てます.プリプリモス.Portanto Nosso Money era Asym :
コモpodem perceber、se aplicarmos o percenarmos o prenorは、第2のカタルーニャエムr r $ 1000、20 - isso porque centavoをします.Se Aredondarmos pra baixo、「perdemos」3 centavos.Se Antidondarmos praシマ、「ganhamos」2 centavos.Eのノートでは、半円でも、ペルーの前半分、ペデモスプレサプリメントは、O .エッセのLimo o o o o o o o o d o d o d o d o d o d o d o d o d o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o d o d o d o d d d o d o o o o o o o o o o o o o o o o o o o o o d o d o d o d o d o d o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o
E . sabem quem enfrentou um問題は、parecido?エレメッモ、ジョージワシントン、O primeiro大統領は、Dos estadosユニドス、Eの馬ダスsoluのseをpropostas foiデアレクサンダーハミルトン、que veio a ser o primeiro秘密のええ、リオo teouroドスeua、e seu最大剰余法.
Poca時代における問題点とその問題点
午前3時00分、4つのEstados、COM Diferentesポピュラは、Cesエステを食べます.Quantos Senadores Cada Estado Teria para que Eles Fossem Representados Plassicionmenteミュンセナドール、アッシムcomo um centavo、tamb m m n o o pode ser dividido em partes.セトー?と主張しているディー
Oは、トドデハミルトン一貫してエムCalcular A Proporを得ますda daポピュラー語は、合計11882ペラQuantidadeデ20のAsendtosディプロンヌヴェルChangandoなし除数デ594 , 1を合計します.アゴラpra cadaエストラードは、se sua popula巣をo o porエッセ除数、por典型的なエストラード1 2560/594、1 chegando no quociente de 4 , 31です.
como jは、concordamos、nはo o o o oポデロゼter 4 senadores e 0、31 um senador para um estado.耳鼻咽喉科は、エストラド1、4、queを1つにする.E isso aconteceパラシュートで降下する人cdaは、Dos outros結果です.AO最終的な、PorコンタDas逮捕されたda Parte inteira、oデデsenadoresアロカドスNOS estadosは、de 18です.pra quais estados v . o o os outros 2 .つのAmerican Paraos que Ficaram com a maor parte decimal antesは、逮捕されます.
探検する.SE Suprimirmos Parte Inteira da coluna senadores por estado e ordenarmos pela parte decimal , o resto , em ordem decrescente , ficarエーモスcom : 1 , 67
5、58
8 , 44
4 , 31
como temos um合計2 2つのsenadores pra再分配、os estados que relebemは、senadores s o o o o os 2の2つのprimeiros da listaです.resultando na coluna senadores porエストラードapはs tomハミルトンをtodoします.
オウムパラドックスa se Noar que foi descoberto ao aplicar o m o todoハミルトンna populaは、o alalama、por isso tambにmを与えます.NOSSO CeriidoアンクルボブノーアーゴのMa . es onde entra.
suasの中でsuasを取り込んでください.カラデ90歳のリレーバンテl ' d d ' dカエデde 90、それに関連するhoje.O王女はピオque iRemosフォーサーアゴラOオープンオープン原則.
Preasisamosの異形のNassa Classe Money para Comportar o m To Todoは、pra conseguirディストリビューションseu valor em - proo - origin - es sem perder centavosを割り当てます.クレモロスOセグィンテMトートード
NBR 5891
アレクサンダーハミルトン、マーティンFowler EおじボブCOS OS Sesemas Financeirosを追ってください.E、デQuebra、vocは、Ganha uns cを得ます.ああ、トドエッセcはdioのfooコベットpor testes単位でrios.Na Primeira Pessoaが複数にするので、e Saabe QuandoアレンポルノDesenvolvemosエサsoluは、oのemを3つ、entのoをtodo o crのo dito tambのm ao e e .valeu、時間!
Bは、NUS:praサーベルクェー・フォー・アレクサンダー・ハミルトン、existe um音楽的なdisponを引きます.Cona Aは、RIA desse que foi o primeiro秘密の味方をします.Segueトレーラーdesseミュージカルfant
"Uma boa parte dos computadores neste mundo manipula dinheiro, então sempre me intrigou que Money não seja um tipo de dados em qualquer linguagem de programação convencional."
https://martinfowler.com/eaaCatalog/money.html):
BOMは、企業のアプリケーションアーキテクチャのEUÑo oのパターンは、MAS SEI que El Sugereは、実装者の残高Oデデマスタークラッセのお金は、COMのアトリエの通貨の量は、Beam como umのmのtodoを割り当てます.NesseアーティゴーVou Mostrar comoの実装のnossoマネーpraのリゾルバumの問題の実de perdaデcentavos em rateio、becomoリゾルバoミストes rio do t tulo.
J . t . t nhamos uma classe money , o que facou muito na escritaはマネーパターンを行う.ENTは、o o se eu puderターAを前払いします.Construa seu valueオブジェクト.デポスデターワレスは、Financeiros Esppalhados por todo seu sistema、vai ser bem difを口外します.
NSSA Classse Money N ' s o To O O Atbuto Currency Pois N ' s o Temos A Internationionioniza Splialo - O , Pero Menos n - Astro O Aindaの必要性E ' n ' o o vo - vamos - terの実装者は、通貨の単位である.アッシムcomo Tamb m m n o o tはnhamos o mをtodo割り当てます.プリプリモス.Portanto Nosso Money era Asym :
public class Money implements Serializable {
private final BigDecimal amount;
private Money(BigDecimal amount) {
if (amount == null) {
throw new AmountCantBeEmptyException();
}
this.amount = amount;
}
public static Money of(BigDecimal amount) {
return new Money(amount);
}
public Money plus(Money addition) {
return Money.of(this.amount.add(addition.amount));
}
public Money minus(Money discount) {
return Money.of(this.amount.subtract(discount.amount));
}
public Money times(BigDecimal factor) {
return Money.of(this.amount.multiply(factor));
}
public BigDecimal getAmount() {
return amount;
}
@Override
public boolean equals(Object obj) {
if (obj == null || !(obj instanceof Money)) {
return false;
}
return this.amount.compareTo(((Money) obj).amount) == 0;
}
@Override
public int hashCode() {
return this.amount.hashCode();
}
}
Isoso Resolvia Boa Party Das Nossos問題ペイディオスでは、ディオディ・エム・エック・プレイサモスがchegouを割り当てる.『十五〇〇〇〇〇〇〇〇〇〇〇〇〇, 20デヴェリア・セール・ラータダ』第五巻コモpodem perceber、se aplicarmos o percenarmos o prenorは、第2のカタルーニャエムr r $ 1000、20 - isso porque centavoをします.Se Aredondarmos pra baixo、「perdemos」3 centavos.Se Antidondarmos praシマ、「ganhamos」2 centavos.Eのノートでは、半円でも、ペルーの前半分、ペデモスプレサプリメントは、O .エッセのLimo o o o o o o o o d o d o d o d o d o d o d o d o d o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o d o d o d o d d d o d o o o o o o o o o o o o o o o o o o o o o d o d o d o d o d o d o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o
E . sabem quem enfrentou um問題は、parecido?エレメッモ、ジョージワシントン、O primeiro大統領は、Dos estadosユニドス、Eの馬ダスsoluのseをpropostas foiデアレクサンダーハミルトン、que veio a ser o primeiro秘密のええ、リオo teouroドスeua、e seu最大剰余法.
Poca時代における問題点とその問題点
午前3時00分、4つのEstados、COM Diferentesポピュラは、Cesエステを食べます.Quantos Senadores Cada Estado Teria para que Eles Fossem Representados Plassicionmenteミュンセナドール、アッシムcomo um centavo、tamb m m n o o pode ser dividido em partes.セトー?と主張しているディー
Oは、トドデハミルトン一貫してエムCalcular A Proporを得ますda daポピュラー語は、合計11882ペラQuantidadeデ20のAsendtosディプロンヌヴェルChangandoなし除数デ594 , 1を合計します.アゴラpra cadaエストラードは、se sua popula巣をo o porエッセ除数、por典型的なエストラード1 2560/594、1 chegando no quociente de 4 , 31です.
como jは、concordamos、nはo o o o oポデロゼter 4 senadores e 0、31 um senador para um estado.耳鼻咽喉科は、エストラド1、4、queを1つにする.E isso aconteceパラシュートで降下する人cdaは、Dos outros結果です.AO最終的な、PorコンタDas逮捕されたda Parte inteira、oデデsenadoresアロカドスNOS estadosは、de 18です.pra quais estados v . o o os outros 2 .つのAmerican Paraos que Ficaram com a maor parte decimal antesは、逮捕されます.
探検する.SE Suprimirmos Parte Inteira da coluna senadores por estado e ordenarmos pela parte decimal , o resto , em ordem decrescente , ficarエーモスcom :
オウムパラドックスa se Noar que foi descoberto ao aplicar o m o todoハミルトンna populaは、o alalama、por isso tambにmを与えます.NOSSO CeriidoアンクルボブノーアーゴのMa . es onde entra.
suasの中でsuasを取り込んでください.カラデ90歳のリレーバンテl ' d d ' dカエデde 90、それに関連するhoje.O王女はピオque iRemosフォーサーアゴラOオープンオープン原則.
Preasisamosの異形のNassa Classe Money para Comportar o m To Todoは、pra conseguirディストリビューションseu valor em - proo - origin - es sem perder centavosを割り当てます.クレモロスOセグィンテMトートード
public class Money implements Serializable {
private static final BigDecimal ONE_HUNDRED = new BigDecimal(100);
public List<Money> allocate(List<BigDecimal> ratios, RemainderDistribution distribution) {
long amountInCents = toCents();
List<Quota> quotas = new ArrayList<>();
for (BigDecimal ratio: ratios) {
quotas.add(new Quota(amountInCents, ratio));
}
distribution.distribute(quotas, amountInCents);
return quotas.stream().map(Quota::toMoney).collect(Collectors.toList());
}
public long toCents() {
return this.amount.multiply(ONE_HUNDRED).longValue();
}
}
public class Quota {
private static final BigDecimal ONE_HUNDRED = new BigDecimal(100);
private long amount;
private long total;
private BigDecimal ratio;
public Quota(long total, BigDecimal ratio) {
this.total = total;
this.ratio = ratio;
this.amount = ratio.multiply(BigDecimal.valueOf(total)).longValue();
}
}
public interface RemainderDistribution {
void distribute(List<Quota> quotas, long total);
}
Lambraは、パラダコにアラバマをします?Mesmo tendo Validado com nososoプロダクトマネージャーque adotarは、エーモスo mをtodoデハミルトンアイダナTemos dを得ます.エントは、O o n ' o o '王o '王エーモス「chumbar」分配私は、o o c c ' digo金をします.エーモスDaixar Nosso Value Object Aberto PIA Extensionsを使用します.UMA Das Suasの実装についての一考察public class HamiltonApportionmentDistribution implements RemainderDistribution {
@Override
public void distribute(List<Quota> quotas, long total) {
long remain = total;
for (Quota quota : quotas) {
remain = remain - quota.getAmount();
}
List<Quota> sortedQuotas = quotas.stream().sorted(Comparator.comparing(Quota::getFractionalPart).reversed()).collect(Collectors.toList());
Iterator<Quota> iterator = sortedQuotas.iterator();
while(remain > 0) {
remain = remain - 1;
iterator.next().addRemain(1);
}
}
}
デッサManeiraレゾルモスAcreeleの問題は、インディオ、ondeの逮捕されたpra baixo「perdは、エーモス」3 centavos(Lembre se que o逮捕されたpra baixo es porコンタDos Centavos、類似したquando「逮捕します」).o c c lulo deve ser feitoは、Medida、ou seja、centavosのmenor unidadeを使用します.E . Cheegamosのseguinte結果NBR 5891
アレクサンダーハミルトン、マーティンFowler EおじボブCOS OS Sesemas Financeirosを追ってください.E、デQuebra、vocは、Ganha uns cを得ます.ああ、トドエッセcはdioのfooコベットpor testes単位でrios.Na Primeira Pessoaが複数にするので、e Saabe QuandoアレンポルノDesenvolvemosエサsoluは、oのemを3つ、entのoをtodo o crのo dito tambのm ao e e .valeu、時間!
Bは、NUS:praサーベルクェー・フォー・アレクサンダー・ハミルトン、existe um音楽的なdisponを引きます.Cona Aは、RIA desse que foi o primeiro秘密の味方をします.Segueトレーラーdesseミュージカルfant
Reference
この問題について(oソフトウェアは、Financeiros、マーティンFowler、アンクルボブEアレクサンダーハミルトンT M M Mコム?), 我々は、より多くの情報をここで見つけました https://dev.to/lepsistemas/o-que-softwares-financeiros-martin-fowler-uncle-bob-e-alexander-hamilton-tem-em-comum-230lテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol