This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
      Learn more about bidirectional Unicode characters
    
  
  
    
  | /* | |
| # Proxy design pattern | |
| - Intent: It provides a surrogate or a placeholder for another object, to control access to it (the original object) | |
| - Types: | |
| - Virtual proxy (Lazy initialization). This is when you have a heavyweight service object that wastes system resources by being always up, even though you only need it from time to time. | |
| - Protection proxy(as in Spotify for subscribers content). This is when you want only specific clients to be able to use the service object; for instance, when your objects are crucial parts of an operating system and clients are various launched applications (including malicious ones). | |
| - Caching proxy (like kingfisher as an example). |