Advertisement
Guest User

Untitled

a guest
May 7th, 2017
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.51 KB | None | 0 0
  1. public Class MailConfiguration{
  2.  
  3. public static String userName;
  4. public static String password;
  5. public static EmailServiceProvider emailService;
  6. }
  7.  
  8. public Class MailInit{
  9.  
  10. public void initialConfiguration(String userName, String password, String emailService ){
  11. MailConfiguration.userName = userName;
  12. MailConfiguration.password = password;
  13.  
  14. if(emailService == "google"){
  15. MailConfiguration.emailService = Class.forName('GmailEmailProvider').getInstance();
  16. }
  17.  
  18. // Register new service in the system, no cascading changes
  19. else if (emailService == "hotmail"){
  20.  
  21. MailConfiguration.emailService = Class.forName('HotEmailProvider').getInstance();
  22. }
  23.  
  24. else{
  25. MailConfiguration.emailService = Class.forName('YahooEmailProvider').getInstance();
  26. }
  27. }
  28. }
  29.  
  30.  
  31. public Interface EmailServiceProvider{
  32.  
  33. public Connection connect(String userName, String password);
  34. public void sendEmail(String recipient, String subject, String messageBody);
  35. public String receiveEmail();
  36. }
  37.  
  38. public Class GoogleEmailProvider implements EmailServiceProvider{
  39.  
  40. private GMailLowLevelClass gmailLowLevelConnection;
  41.  
  42. @Override
  43. public connect(String userName, String password){
  44.  
  45. GMailLowLevelClass gmailLowLevelClassObject = new GMailLowLevelClass();
  46. this.gmailLowLevelConnection = gmailLowLevelClassObject.connect(String userName, String password);
  47. }
  48.  
  49. @Override
  50. public sendEmail(String recipient, String subject, String messageBody){
  51.  
  52. this.gmailLowLevelConnection.send(recipient, subject , messageBody );
  53. }
  54.  
  55. @Override
  56. public String receiveEmail(){
  57.  
  58. return this.gmailLowLevelConnection.receiveEmail();
  59. }
  60. }
  61.  
  62. public Class YahooEmailService implements EmailService{
  63.  
  64. private YahooMailLowLevelClass yahooLowLevelConnection;
  65.  
  66. @Override
  67. public connect(String userName, String password){
  68.  
  69. YahooLowLevelClass yahooLowLevelClassObject = new YahooLowLevelClass();
  70. this.yahooLowLevelConnection = yahooLowLevelClassObject.connect(String userName, String password);
  71. }
  72.  
  73. @Override
  74. public sendEmail(String recipient, String subject, String messageBody){
  75.  
  76. this.yahooLowLevelConnection.send(recipient, subject , messageBody );
  77. }
  78.  
  79. @Override
  80. public String receiveEmail(){
  81.  
  82. return this.yahooLowLevelConnection.receiveEmail();
  83. }
  84. }
  85.  
  86. // Adding new feature by extension i.e open closed principle
  87. public Class HotEmailService implements EmailService{
  88.  
  89. private HotMailLowLevelClass hotMailLowLevelConnection;
  90.  
  91. @Override
  92. public connect(String userName, String password){
  93.  
  94. HotMailLowLevelClass hotmailLowLevelClassObject = new HotMailLowLevelClass();
  95. this.hotMailLowLevelConnection = hotmailLowLevelClassObject.connect(String userName, String password);
  96. }
  97.  
  98. @Override
  99. public sendEmail(String recipient, String subject, String messageBody){
  100.  
  101. this.hotMailLowLevelConnection.send(recipient, subject , messageBody );
  102. }
  103.  
  104. @Override
  105. public String receiveEmail(){
  106.  
  107. return this.hotMailLowLevelConnection.receiveEmail();
  108. }
  109. }
  110.  
  111. // MainClient class remains intact.
  112. public Class MailClient{
  113.  
  114. public void sendEmail(String recipient, String subject, String messageBody){
  115.  
  116. MailConfiguration.emailService.connect(MailConfiguration.userName, MailConfiguration.password);
  117. MailConfiguration.emailService.send(recipient, subject,messageBody);
  118. }
  119.  
  120. public String receiveEmail(){
  121.  
  122. MailConfiguration.emailService.connect(MailConfiguration.userName, MailConfiguration.password);
  123. return MailConfiguration.emailService.receive();
  124. }
  125. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement