Hexagonal Architecture in Java
This commit is contained in:
parent
8d6e70ffee
commit
84bcc8115c
@ -0,0 +1,11 @@
|
|||||||
|
package com.baeldung.hexagon;
|
||||||
|
|
||||||
|
public class ConstantTaxRateRepository implements TaxRateRepository{
|
||||||
|
|
||||||
|
private static final double TAX_RATE = 0.13d;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public double getRate() {
|
||||||
|
return TAX_RATE;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,17 @@
|
|||||||
|
package com.baeldung.hexagon;
|
||||||
|
|
||||||
|
public class TaxCalculator implements TaxService {
|
||||||
|
|
||||||
|
private TaxRateRepository taxRateRepository;
|
||||||
|
|
||||||
|
public TaxCalculator(TaxRateRepository repository) {
|
||||||
|
super();
|
||||||
|
taxRateRepository = repository;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public double calculateTax(Double amount) {
|
||||||
|
return amount * taxRateRepository.getRate();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,13 @@
|
|||||||
|
package com.baeldung.hexagon;
|
||||||
|
|
||||||
|
public class TaxFactory {
|
||||||
|
|
||||||
|
public static TaxService getTaxService() {
|
||||||
|
return new TaxCalculator(getTaxRepository());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static TaxRateRepository getTaxRepository() {
|
||||||
|
return new ConstantTaxRateRepository();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,6 @@
|
|||||||
|
package com.baeldung.hexagon;
|
||||||
|
|
||||||
|
public interface TaxRateRepository {
|
||||||
|
|
||||||
|
public double getRate();
|
||||||
|
}
|
@ -0,0 +1,7 @@
|
|||||||
|
package com.baeldung.hexagon;
|
||||||
|
|
||||||
|
public interface TaxService {
|
||||||
|
|
||||||
|
public double calculateTax(Double amount);
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,9 @@
|
|||||||
|
package com.baeldung.hexagon;
|
||||||
|
|
||||||
|
public class TestTaxUser {
|
||||||
|
|
||||||
|
public double calculateTax(Double amount) {
|
||||||
|
return TaxFactory.getTaxService().calculateTax(amount);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user