High conjunction preventing.
SafeValue must use [property]=binding: One of the advantages of the DDD's approach is an access constraint. They define which libraries can use other libraries or depend upon them. In general, it uses a hierarchical relationship from top to bottom. It means that each layer can only communicate with underlying layers. As for cross-domain access, it is possible only in the shared area. Thus, we get a weak connection and, as a result, increased maintainability.
To correspond to Open Services in DDD, developers usually seek to reduce the amount of logic in a shared area. In this case, they use this approach for developing APIs that publish building blocks for other domains.
So, let's back to the diagram above: you may define the following two main characteristics of the shared part:
- Most of the util libraries (greyed-out blocks) are placed in the shared areas. It's done primarily because of the phases they are responsible for and use across the system.
- The general UI libraries that ensure a system-wide look and feel are also placed in the shared areas for the same reason.
(see http://g.co/ng/security#xss)