Click here to watch in Youtube : https://www.youtube.com/watch?v=o-rSyfmBqh0
Click the below Image to Enlarge
Strategy Design pattern - Implementation [Payment] |
Strategy Design pattern - Implementation [Payment] - Class Diagram |
PaymentStrategy.java
public interface PaymentStrategy
{
public void pay(String amount);
}
DebitCardPaymentStrategy.java
public class DebitCardPaymentStrategy implements PaymentStrategy
{
public void pay(String amount)
{
System.out.println("Customer pays the money " +amount+ "Rs. using Debit Card");
}
}
CreditCardPaymentStrategy.java
public class CreditCardPaymentStrategy implements PaymentStrategy
{
public void pay( String amount )
{
System.out.println("Customer pays the money " + amount + "Rs. using Credit Card");
}
}
ByCashPaymentStrategy.java
public class ByCashPaymentStrategy implements PaymentStrategy
{
public void pay( String amount )
{
System.out.println("Customer pays the money " + amount + "Rs. as a Cash");
}
}
PaymentContext.java
public class PaymentContext
{
private PaymentStrategy paymentStrategy;
// Client will set what PaymentStrategy to use by calling this method
public void setPaymentStrategy(PaymentStrategy strategy)
{
this.paymentStrategy = strategy;
}
public PaymentStrategy getPaymentStrategy()
{
return paymentStrategy;
}
public void pay(String amount)
{
paymentStrategy.pay(amount);
}
}
Customer.java
import java.util.Scanner;
public class Customer
{
public static void main( String[] args )
{
System.out.println("Please enter Payment Type : 'CreditCard' or 'DebitCard' or 'ByCash'");
Scanner scanner = new Scanner(System.in);
String paymentType = scanner.next();
System.out.println("Payment type is : " + paymentType);
System.out.println("\nPlease enter Amount to Pay : ");
Scanner scanner1 = new Scanner(System.in);
String amount = scanner1.next();
System.out.println("amount is : " + amount);
PaymentContext ctx = null;
ctx = new PaymentContext();
if( "CreditCard".equalsIgnoreCase(paymentType) )
{
ctx.setPaymentStrategy(new CreditCardPaymentStrategy());
}
else if( "DebitCard".equalsIgnoreCase(paymentType) )
{
ctx.setPaymentStrategy(new DebitCardPaymentStrategy());
}
else if( "ByCash".equalsIgnoreCase(paymentType) )
{
ctx.setPaymentStrategy(new ByCashPaymentStrategy());
}
System.out.println("PaymentContext has :"+ctx.getPaymentStrategy());
ctx.pay(amount);
}
}
Output
Please enter Payment Type : 'CreditCard' or 'DebitCard' or 'ByCash'
CreditCard
Payment type is : CreditCard
Please enter Amount to Pay :
90000
amount is : 90000
PaymentContext has :CreditCardPaymentStrategy@1e4cbc4
Customer pays the money 90000Rs. using Credit Card
Please enter Payment Type : 'CreditCard' or 'DebitCard' or 'ByCash'
DebitCard
Payment type is : DebitCard
Please enter Amount to Pay :
90000
amount is : 90000
PaymentContext has :DebitCardPaymentStrategy@1e4cbc4
Customer pays the money 90000Rs. using Debit Card
No comments:
Post a Comment