fork download
  1. //strategy design pattern
  2. interface DeliveryStrategy{
  3. public void deliver(String product);
  4. }
  5. class StandardDelivery implements DeliveryStrategy{
  6. @Override
  7. public void deliver(String product){
  8. System.out.println("Delivered "+product+" using Standard Delivery");
  9. }
  10. }
  11. class ExpressDelivery implements DeliveryStrategy{
  12. @Override
  13. public void deliver(String product){
  14. System.out.println("Delivered "+product+" using Express Delivery");
  15. }
  16. }
  17. class SameDayDelivery implements DeliveryStrategy{
  18. @Override
  19. public void deliver(String product){
  20. System.out.println("Delivered "+product+" using Same Day Delivery");
  21. }
  22. }
  23. class PickupDelivery implements DeliveryStrategy{
  24. @Override
  25. public void deliver(String product){
  26. System.out.println(product+" Ready for Pickup");
  27. }
  28. }
  29.  
  30. class DeliveryContext{
  31. private DeliveryStrategy strategy;
  32.  
  33. public DeliveryContext(DeliveryStrategy strategy){
  34. this.strategy = strategy;
  35. }
  36.  
  37. public void setStrategy(DeliveryStrategy strategy){
  38. this.strategy = strategy;
  39. }
  40. public void processDelivery(String product){
  41. strategy.deliver(product);
  42. }
  43. }
  44.  
  45. public class Main{
  46. public static void main(String[] args)
  47. {
  48. DeliveryContext context = new DeliveryContext(new StandardDelivery());
  49. context.processDelivery("Laptop");
  50.  
  51. context.setStrategy(new ExpressDelivery());
  52. context.processDelivery("Moblie");
  53.  
  54. context.setStrategy(new SameDayDelivery());
  55. context.processDelivery("Book");
  56.  
  57. context.setStrategy(new PickupDelivery());
  58. context.processDelivery("Anything");
  59. }
  60. }
  61.  
Success #stdin #stdout 0.11s 55488KB
stdin
Standard input is empty
stdout
Delivered Laptop using Standard Delivery
Delivered Moblie using Express Delivery
Delivered Book using Same Day Delivery
Anything Ready for Pickup