Class ShippingCostCalculator
java.lang.Object
com.university.bookstore.visitor.ShippingCostCalculator
- All Implemented Interfaces:
MaterialVisitor
Concrete visitor implementation for calculating shipping costs.
Demonstrates the Visitor pattern by providing different shipping
cost calculations based on material type.
Shipping costs vary by material type: - Physical items: $0.50 per 100g - Digital items: $0 (instant download) - Magazines: $2 flat rate
- Since:
- 2024-09-15
- Version:
- 2.0
- Author:
- Navid Mohaghegh
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptiondoublecalculateShippingCost(Material material) Calculates shipping cost for a single material.doubleGets the total shipping cost calculated so far.voidreset()Resets the shipping cost calculator for a new calculation.voidCalculates shipping cost for audio books.voidCalculates shipping cost for e-books.voidCalculates flat rate shipping cost for magazines.voidvisit(PrintedBook book) Calculates shipping cost for a printed book based on weight.voidvisit(VideoMaterial video) Calculates shipping cost for video materials.
-
Constructor Details
-
ShippingCostCalculator
public ShippingCostCalculator()
-
-
Method Details
-
visit
Calculates shipping cost for a printed book based on weight. Assumes average book weight of 500g.- Specified by:
visitin interfaceMaterialVisitor- Parameters:
book- the printed book
-
visit
Calculates flat rate shipping cost for magazines.- Specified by:
visitin interfaceMaterialVisitor- Parameters:
magazine- the magazine
-
visit
Calculates shipping cost for audio books. Physical CDs: weight-based, Digital: free- Specified by:
visitin interfaceMaterialVisitor- Parameters:
audioBook- the audio book
-
visit
Calculates shipping cost for video materials. Physical DVDs: weight-based, Digital: free- Specified by:
visitin interfaceMaterialVisitor- Parameters:
video- the video material
-
visit
Calculates shipping cost for e-books. E-books are always digital downloads with no shipping cost.- Specified by:
visitin interfaceMaterialVisitor- Parameters:
ebook- the e-book
-
getTotalShippingCost
public double getTotalShippingCost()Gets the total shipping cost calculated so far.- Returns:
- the total shipping cost
-
reset
public void reset()Resets the shipping cost calculator for a new calculation. -
calculateShippingCost
Calculates shipping cost for a single material.- Parameters:
material- the material to calculate shipping for- Returns:
- the shipping cost for this material
-