This comes up in interviews with intermediate programmers (and some seniors), the "enum factory" in Java:
public final class Money { // Infrequent that new currencies created, // old currencies never vanish, just fade away public enum Currency { USD, PHP; // And many more // Additional fields as needed, e.g., locale public Money print(final BigDecimal amount) { return new Money(this, amount); } } private final Currency currency; private final BigDecimal amount; private Money(final Currency currency, final BigDecimal amount) { this.currency = currency; this.amount = amount; } // Appropriate methods }
And elsewhere with static imports:
Money pocket = asList(USD.print(ONE), PHP.print(TEN));
The key observations:
- Amounts of money are intimately attached to a particular currency
- Currency has few qualities not attached to money
- Ok to add more currencies through code
- Code reads better with factory than without
No comments:
Post a Comment