The composite pattern
Universal Call Center recently started providing customer support for online retail businesses. It is required to track details of products shipped in any order consignment. One order can have multiple products. Developers came up with the following simple Apex class:
public class Product{
public String universalProductCode { get; set; }
public Decimal cost { get; set; }
}
The preceding class stores the required information about one product. One order can have multiple products, so we need one more class to represent an order, as shown in the following code:
public class Order{
public List<Product > lstProducts {get; set; }
/**
* Total products one Order
* */
public integer totalProducts() {
if(lstProducts != null)
return lstProducts.size();
return 0;
}
/**
* Total cost of Order
* */
public Decimal totalCost(){
Decimal cost = 0;
...