title: Where does this method belong?
body: <p>Let's say I have a model Address which get entered from UI. I have to validate that the address never gets saved into a system in an incomplete state (whatever that might mean to the business).</p>
  
  <p>When the user enters an address in the UI, it gets serialized into an Address object.
  So I was wondering: where does a method like "isComplete" belong? The validator or the model?</p>
  
  <p>If I put that method in the address model and call <code>address.isComplete()</code> in the validator before saving, it implies that incomplete address is a valid system state; if I do the completeness check in the validator, it feels like the validator has too much knowledge of the address internals.</p>
  
  <p>I'm wondering, what general convention do others follow?</p>
  
  <p>EDIT : 
  As someone mentioned below , in the example above address object is reused across multiple systems and "full" object in one system may not mean "full" object in another system . So there is no consistent way enforcing "An object should never be constructed in a invalid state" globally because invalid state is context dependent.</p>