Advertisement
Guest User

Untitled

a guest
Apr 19th, 2019
116
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.74 KB | None | 0 0
  1. public class DelegateApex {
  2.  
  3. public interface SObjectDelegate {
  4. List<SObject> getObject(String search);
  5. }
  6.  
  7. public class AccountDelegate implements SObjectDelegate {
  8. public List<SObject> getObject(String searchVar) {
  9. List<Account> accounts = [SELECT Id, Name
  10. FROM Account
  11. WHERE Name LIKE :('%' + searchVar + '%')];
  12. if (accounts != null && accounts.size() > 0) {
  13. return (List<SObject>)accounts;
  14. }
  15. return null;
  16. }
  17. }
  18.  
  19. public class ContactDelegate implements SObjectDelegate {
  20. public List<SObject> getObject(String searchVar) {
  21. List<Contact> contacts = [SELECT Id, Name
  22. FROM Contact
  23. WHERE Name LIKE :('%' + searchVar + '%')];
  24. if (contacts != null && contacts.size() > 0) {
  25. return (List<SObject>)contacts;
  26. }
  27. return null;
  28. }
  29. }
  30.  
  31. public class DelegateClient {
  32. private SObjectDelegate delegate;
  33. public DelegateClient(SObjectDelegate delegate) {
  34. this.delegate = delegate;
  35. }
  36. public List<SObject> doSearch(String search) {
  37. return delegate.getObject(search);
  38. }
  39. }
  40.  
  41. public static void delegateExampleRunner() {
  42. AccountDelegate ad = new AccountDelegate();
  43. ContactDelegate cd = new ContactDelegate();
  44. DelegateClient dc = new DelegateClient(ad);
  45. System.debug(dc.doSearch('a')); // List of Accounts containing 'a' in the name
  46. dc = new DelegateClient(cd);
  47. System.debug(dc.doSearch('a')); // List of Contacts containing 'a' in the name
  48. }
  49. }
  50.  
  51. /**
  52. Sample Output:
  53.  
  54. 09:51:12.24 (118080844)|USER_DEBUG|[49]|DEBUG|(Account:{Id=0016300000dmlgMAAQ, Name=San Antonio Spurs})
  55. 09:51:12.24 (42083669)|USER_DEBUG|[51]|DEBUG|(Contact:{Id=0036300000T6MJ3AAN, Name=Manu Ginobilli}, Contact:{Id=0036300000T6MI1AAN, Name=Tim Duncan})
  56.  
  57.  
  58. **/
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement