Advertisement
Kralizek

Object composition

Dec 8th, 2015
135
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.16 KB | None | 0 0
  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. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement