19
Feb
Simple shopping cart implementation in Java
http://defectracker.com/wp-content/uploads/2020/02/shoppingCart.7z
Simple shopping cart implementation in Java
================================================
Step 1: Products class
=========================
public class Item {
private String prdCode;
private int price;
public String getPrdCode() {
return prdCode;
}
public int getPrice() {
return price;
}
public Item(String prdCode, int price) {
super();
this.prdCode = prdCode;
this.price = price;
}
@Override
public String toString() {
return "Item [prdCode=" + prdCode + ", price=" + price + "]";
}
}
Step 2: Create a PaymentMethod
================================
public interface PaymentStrategy {
public void pay(int amount);
}
Step 2.1 Create PaymentMethod implementations
==============================================
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class CreaditCardStrategy implements PaymentStrategy {
final Logger log = LoggerFactory.getLogger(CreaditCardStrategy.class);
private String name;
private String cardNumber;
private String cvv;
private String dateOfExpiry;
public CreaditCardStrategy(String nm, String ccNum, String cvv, String expiryDate) {
this.name = nm;
this.cardNumber = ccNum;
this.cvv = cvv;
this.dateOfExpiry = expiryDate;
}
@Override
public void pay(int amount) {
log.info("{} paid with credit/debit card by {}{}{}{}", amount, name, cardNumber, cvv);
}
}
Step 2.2 Create PaymentMethod implementation for PayPal
=========================================================
import com.github.tonydeng.desgin.strategy.PaymentStrategy;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class PaypalStrategy implements PaymentStrategy {
private static final Logger log = LoggerFactory.getLogger(PaypalStrategy.class);
private String email;
private String password;
public PaypalStrategy(String email, String pwd) {
this.email = email;
this.password = pwd;
}
@Override
public void pay(int amount) {
log.info("{} paid using Paypal by {}", amount, email);
}
}
Step 3: Create your shopping Cart
======================================
import java.util.ArrayList;
import java.util.List;
public class ShoppingCart {
List<Item> items;
public ShoppingCart() {
this.items = new ArrayList<>();
}
public void addItem(Item i) {
if(i!= null) {
items.add(i);
}
}
public void removeItem(Item i) {
if(items.contains(i))
items.remove(i);
}
public int calculateTotal() {
int sum = 0;
for (Item item : items) {
sum += item.getPrice();
}
return sum;
}
public void pay(PaymentStrategy payment) {
payment.pay(calculateTotal());
}
public void displayCart() {
for(Item i: items)
System.out.println(i);
}
}
Step 4: Client
=================
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class Client4ShoppingCart {
public static void main(String[] args) {
final Logger log = LoggerFactory.getLogger(Client4ShoppingCart.class);
log.info("Starting client");
Item item1 = new Item("Cup", 99);
Item item2 = new Item("Plate", 99);
ShoppingCart sc = new ShoppingCart();
sc.addItem(item1);
sc.addItem(item2);
sc.displayCart();
int total = sc.calculateTotal();
log.info("Total cart value: ",total);
sc.pay(new CreaditCardStrategy("Name", "CC No", "CVV", "Expiry"));
}
}
Output:
Item [prdCode=Cup, price=99]
Item [prdCode=Plate, price=99]
Total cart value: 198
***** Shopping cart with LinkedHashMap *****
package shoppingCart;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.Map;
public class ShoppingCart {
Map<String, Integer> items;
public ShoppingCart() {
this.items = new LinkedHashMap<>();
}
public void addItem(Item i) {
items.put(i.getPrdCode(), items.containsKey(i.getPrdCode()) ? (items.get(i.getPrdCode())+1)*i.getPrice() : 1*i.getPrice());
}
public void removeItem(Item i) {
if (items.containsKey(i.getPrdCode()))
items.remove(i);
}
public int calculateTotal() {
int sum = 0;
Iterator<String> itr = items.keySet().iterator();
while (itr.hasNext()) {
String product = itr.next();
int cost = items.get(product);
sum = sum + cost;
}
return sum;
}
public void pay(PaymentStrategy payment) {
payment.pay(calculateTotal());
}
public void displayCart() {
for (String i : items.keySet())
System.out.println(i);
}
}
0 comments