0% found this document useful (0 votes)
6 views3 pages

US Sales Tax Calculator Implementation

The document outlines the implementation of a Sales Tax Calculator using the Strategy Pattern in Java, supporting five states with varying tax rates. It includes a strategy interface, context class, and concrete strategy classes for Minnesota, California, New York, New Mexico, and Texas. A client class demonstrates the usage of the calculator with a sample purchase amount.
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
6 views3 pages

US Sales Tax Calculator Implementation

The document outlines the implementation of a Sales Tax Calculator using the Strategy Pattern in Java, supporting five states with varying tax rates. It includes a strategy interface, context class, and concrete strategy classes for Minnesota, California, New York, New Mexico, and Texas. A client class demonstrates the usage of the calculator with a sample purchase amount.
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

Name: Glen Mark T.

Anduiza

Date: 02/18/2025

Using the Strategy Pattern, implement a set of classes to compute for Sales Tax in the US.

Using the formula [Sales Tax%] x $[amount] = $[tax]

Assumptions:

1. Sales Tax varies per state.


2. We will only support 5 states for now; but will add more in the future.
3. Tax rates are: MN=6.78%, CA=6.5%, NY=4.00%, NM=5.125%, TX=6.25%

Define Strategy Interface for Sales Tax Calculator

[Link]
public interface TaxCalculatorService {

double calculateTax(double amount);


}

Define Context class for Sales Tax Calculator

[Link]
public class SalesTaxCalculator {

private TaxCalculatorService taxCalculatorService;

public void setTaxCalculator(TaxCalculatorService taxCalculator) {


[Link] = taxCalculator;
}

public double computeSalesTax(double amount) {


return [Link](amount);
}
}
Implement Concrete Strategy classes for MN, CA, NY, NM and TX

[Link]
@Service
public class MinnesotaTaxCalculatorServiceImpl implements TaxCalculatorService {

private static final double TAX_RATE = 0.0678;

public double calculateTax(double amount) {


return amount * TAX_RATE;
}
}

[Link]
@Service
public class CaliforniaTaxCalculatorServiceImpl implements TaxCalculatorService {

private static final double TAX_RATE = 0.065;

public double calculateTax(double amount) {


return amount * TAX_RATE;
}
}

[Link]
@Service
public class NewYorkTaxCalculatorServiceImpl implements TaxCalculatorService {

private static final double TAX_RATE = 0.04;

public double calculateTax(double amount) {


return amount * TAX_RATE;
}
}

[Link]
@Service
public class NewMexicoTaxCalculatorServiceImpl implements TaxCalculatorService {

private static final double TAX_RATE = 0.05125;

public double calculateTax(double amount) {


return amount * TAX_RATE;
}
}

[Link]
@Service
public class TexasTaxCalculatorServiceImpl implements TaxCalculatorService {

private static final double TAX_RATE = 0.0625;

public double calculateTax(double amount) {


return amount * TAX_RATE;
}
}
Create Client class
@SpringBootApplication
public class TaxCalculatorApplication {

public static void main(String[] args) {


[Link]([Link], args);

//Sample Purchase Amount


double purchaseAmount = 100.0;

SalesTaxCalculator calculator = new SalesTaxCalculator();

// Change strategy to Minnesota


[Link](new MinnesotaTaxCalculatorServiceImpl());
double taxMinnesota = [Link](purchaseAmount);
[Link]("MN Sales Tax on $" + purchaseAmount + ": $" + taxMinnesota);

// Change strategy to California


[Link](new CaliforniaTaxCalculatorServiceImpl());
double taxCalifornia = [Link](purchaseAmount);
[Link]("CA Sales Tax on $" + purchaseAmount + ": $" +
taxCalifornia);

// Change strategy to New York


[Link](new NewYorkTaxCalculatorServiceImpl());
double taxNewYork = [Link](purchaseAmount);
[Link]("NY Sales Tax on $" + purchaseAmount + ": $" + taxNewYork);

// Change strategy to New Mexico


[Link](new NewMexicoTaxCalculatorServiceImpl());
double taxNewMexico = [Link](purchaseAmount);
[Link]("NM Sales Tax on $" + purchaseAmount + ": $" + taxNewMexico);

// Change strategy to Texas


[Link](new TexasTaxCalculatorServiceImpl());
double taxTexas = [Link](purchaseAmount);
[Link]("TX Sales Tax on $" + purchaseAmount + ": $" + taxTexas);
}
}

You might also like