2016-05-31 20:12:27 +02:00
|
|
|
---
|
|
|
|
layout: pattern
|
|
|
|
title: Abstract Document
|
|
|
|
folder: abstract-document
|
|
|
|
permalink: /patterns/abstract-document/
|
|
|
|
categories: Structural
|
|
|
|
tags:
|
2019-12-13 21:09:28 +02:00
|
|
|
- Extensibility
|
2016-05-31 20:12:27 +02:00
|
|
|
---
|
|
|
|
|
|
|
|
## Intent
|
|
|
|
Achieve flexibility of untyped languages and keep the type-safety
|
|
|
|
|
2019-12-07 20:01:13 +02:00
|
|
|
## Class diagram
|
2016-06-04 20:06:32 +02:00
|
|
|

|
|
|
|
|
2016-05-31 20:12:27 +02:00
|
|
|
|
|
|
|
## Applicability
|
|
|
|
Use the Abstract Document Pattern when
|
|
|
|
|
2016-06-04 20:06:32 +02:00
|
|
|
* 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
|
|
|
|
|
2016-05-31 20:12:27 +02:00
|
|
|
|
2016-06-04 20:06:32 +02:00
|
|
|
## Credits
|
2016-05-31 20:12:27 +02:00
|
|
|
|
2016-06-04 20:06:32 +02:00
|
|
|
* [Wikipedia: Abstract Document Pattern](https://en.wikipedia.org/wiki/Abstract_Document_Pattern)
|
2019-12-07 20:01:13 +02:00
|
|
|
* [Martin Fowler: Dealing with properties](http://martinfowler.com/apsupp/properties.pdf)
|