title: Correct architecture for presentation objects that implement same interface
body: <p>In domain model of my project I have a pending amount of classes that implement the same interface IProduct: Phone, Tablet, DataPackage, Accessory, etc.</p>
  
  <p>I want different combinations of this products to be displayed on different product list pages. This means, that I get a List in presentation layer from domain layer. And now, I'm wondering what is the correct way of binding different views for each interface implementation?</p>
  
  <p>I see two ways of doing that:</p>
  
  <ol>
  <li>Have a property\method in IProduct interface that defines what view will be chosen when need to display the product. One one hand it helps to encapsulate display logic into the class and call smth like product.Display() for each of the product. On the other hand this causes to add some display logic into the domain model, which is not good on my point of view.</li>
  <li>In a presentation layer have a factory that analyzes type of the product and binds correct presentation.</li>
  </ol>
  
  <p>Which one is preferable? Maybe there is more patterns for doing that?</p>