#355 finalize example

This commit is contained in:
qza
2016-06-04 20:06:32 +02:00
parent c229ec23b3
commit afdeba4f9a
14 changed files with 568 additions and 119 deletions

View File

@ -12,15 +12,20 @@ tags:
## Intent
Achieve flexibility of untyped languages and keep the type-safety
![alt text](./etc/abstract-document_1.png "Abstract Document")
![alt text](./etc/abstract-document-base.png "Abstract Document Base")
![alt text](./etc/abstract-document.png "Abstract Document Traits and Domain")
## Applicability
Use the Abstract Document Pattern when
* there is a need for dynamic properties
* you want a better way to organize domain
* you want loosely coupled system with flexibility of untyped languages
* there is a need to add new properties on the fly
* you want a flexible way to organize domain in tree like structure
* you want more loosely coupled system
## Real world examples
* [Speedment](https://github.com/speedment/speedment)
## Credits
* [Wikipedia: Abstract Document Pattern](https://en.wikipedia.org/wiki/Abstract_Document_Pattern)
* [Martin Fowler: Dealing with properties](http://martinfowler.com/apsupp/properties.pdf)