daily pastebin goal
20%
SHARE
TWEET

Object composition

Kralizek Dec 8th, 2015 72 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. void Main()
  2. {
  3.         IDocumentLoaderModule[] modules = new IDocumentLoaderModule[]
  4.         {
  5.                 new IntDocumentLoaderModule(),
  6.                 new StringDocumentLoaderModule()
  7.         };
  8.  
  9.         DocumentLoader loader = new DocumentLoader(modules);
  10.        
  11.         Document document = loader.LoadDocument();
  12.        
  13.         document.Dump();
  14. }
  15.  
  16. public class DocumentLoader
  17. {
  18.         private readonly IReadOnlyList<IDocumentLoaderModule> _modules;
  19.  
  20.         public DocumentLoader(IReadOnlyList<IDocumentLoaderModule> modules)
  21.         {
  22.                 _modules = modules;
  23.         }
  24.  
  25.         public Document LoadDocument()
  26.         {
  27.                 Document document = new Document();
  28.                
  29.                 foreach (var module in _modules)
  30.                         module.Load(document);
  31.                        
  32.                 return document;
  33.         }
  34. }
  35.  
  36. public class Document
  37. {
  38.         public int IntValue { get; set; }
  39.         public string StringValue { get; set; }
  40. }
  41.  
  42. public interface IDocumentLoaderModule
  43. {
  44.         void Load(Document document);
  45. }
  46.  
  47. public class IntDocumentLoaderModule : IDocumentLoaderModule
  48. {
  49.         public void Load (Document document)
  50.         {
  51.                 // some logic
  52.                 document.IntValue = 42;
  53.         }
  54. }
  55.  
  56. public class StringDocumentLoaderModule : IDocumentLoaderModule
  57. {
  58.         public void Load (Document document)
  59.         {
  60.                 // some logic
  61.                 document.StringValue = "Foo";
  62.         }
  63. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top