TobNil

Design Pattern - Strategy

Mar 30th, 2016
132
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.89 KB | None | 0 0
  1. Main.Java
  2.  
  3. public class Main {
  4.  
  5.     public static void main(String[] args) {
  6.         ShoppingCart shoppingCart = new ShoppingCart();
  7.        
  8.         Item itemOne = new Item(23);
  9.         Item itemTwo = new Item(42);
  10.        
  11.         shoppingCart.addItemToShoppingCart(itemOne);
  12.         shoppingCart.addItemToShoppingCart(itemTwo);
  13.        
  14.         shoppingCart.pay(new CreditCardStrategy("Tobas", "123", "123", "Visa", "16/25"));
  15.        
  16.     }
  17.  
  18. }
  19.  
  20. ==============================================================================================================================
  21. ShoppingCart.Java
  22.  
  23. import java.util.ArrayList;
  24. import java.util.List;
  25.  
  26. public class ShoppingCart {
  27.     private List<Item> items;
  28.    
  29.     public ShoppingCart(){
  30.         this.items = new ArrayList<Item>();
  31.     }
  32.    
  33.     public void addItemToShoppingCart(Item item){
  34.         items.add(item);
  35.     }
  36.    
  37.     public void removeItemFromShoppingCart(Item item){
  38.         items.remove(item);
  39.     }
  40.    
  41.     public int calculateTotalPrice(){
  42.         int sum = 0;
  43.        
  44.         for(Item item : items){
  45.             sum += item.getPrice();
  46.         }
  47.         return sum;
  48.     }
  49.    
  50.     public void pay(PaymentStrategy paymentMethod){
  51.         int amount = calculateTotalPrice();
  52.         paymentMethod.pay(amount);
  53.     }
  54. }
  55.  
  56. ==============================================================================================================================
  57. Item.Java
  58.  
  59.  
  60. public class Item {
  61.     private int price;
  62.    
  63.     public Item(int price){
  64.         this.price = price;
  65.     }
  66.    
  67.     public int getPrice(){
  68.         return this.price;
  69.     }
  70. }
  71.  
  72. ==============================================================================================================================
  73. PayPalStrategy.Java
  74.  
  75. public class PayPalStrategy implements PaymentStrategy{
  76.  
  77.     private String userName;
  78.     private String password;
  79.    
  80.     public PayPalStrategy(String userName, String password) {
  81.         this.userName = userName;
  82.         this.password = password;
  83.     }
  84.    
  85.     @Override
  86.     public void pay(int amount) {
  87.         System.out.println(amount + " paid with PayPal");
  88.     }
  89.  
  90. }
  91.  
  92. ==============================================================================================================================
  93. CreditCardStrategy.java
  94.  
  95. public class CreditCardStrategy implements PaymentStrategy{
  96.  
  97.     private String cardHolderName;
  98.     private String cardNumber;
  99.     private String cvv;
  100.     private String cardProvider;
  101.     private String dateOfExpiry;
  102.    
  103.     public CreditCardStrategy(String cardHolderName, String cardNumber, String cvv, String cardProvider, String dateOfExpiry) {
  104.         this.cardHolderName = cardHolderName;
  105.         this.cardNumber = cardNumber;
  106.         this.cvv = cvv;
  107.         this.cardProvider = cardProvider;
  108.         this.dateOfExpiry = dateOfExpiry;
  109.     }
  110.    
  111.     @Override
  112.     public void pay(int amount) {
  113.         System.out.println(amount + " paid with Credit Card");
  114.     }
  115.  
  116. }
  117.  
  118. ==============================================================================================================================
  119. PaymentStrrategy.Java
  120.  
  121. public interface PaymentStrategy {
  122.     public void pay(int amount);
  123. }
Add Comment
Please, Sign In to add comment