1 /**
2 The package provides a set interfaces that standardise the implementation
3 of Factory objects. It provides as well a basic set of such objects.
4  
5 The containers defined in container package use them to construct
6 the objects contained in them. 
7 
8 See:
9 $(UL
10     $(LI factory.d -> provides basic interface for foactories that can be stored in 
11     library containers (DI containers). Implement a new kind of factory only when
12     a totally different instantiation logic is required comparing to default one in 
13     this package. )
14     $(LI generic_factory.d -> provides a set of interfaces that allows to split instantiation
15     logic in smaller parts, that are encapsulated in respective objects. It provides
16     a default implementation of GenericFactory which is an extension of Factory interface
17     that permits to build instantiation logic out of smaller parts. Use/create classes 
18     implementing interfaces provided here when, only a part of instantiation logic is
19     required to modify, or add. )
20     )
21 
22 Note:
23     Default implementations when encounter a LocatorReference in argument list for a 
24     constructor or method, interprets it as a reference to an object located in
25     container, and therefore fetches it from container and uses it as argument instead
26     of LocatorReference object.
27     
28 License:
29 	Boost Software License - Version 1.0 - August 17th, 2003
30     
31     Permission is hereby granted, free of charge, to any person or organization
32     obtaining a copy of the software and accompanying documentation covered by
33     this license (the "Software") to use, reproduce, display, distribute,
34     execute, and transmit the Software, and to prepare derivative works of the
35     Software, and to permit third-parties to whom the Software is furnished to
36     do so, all subject to the following:
37     
38     The copyright notices in the Software and this entire statement, including
39     the above license grant, this restriction and the following disclaimer,
40     must be included in all copies of the Software, in whole or in part, and
41     all derivative works of the Software, unless such copies or derivative
42     works are solely in the form of machine-executable object code generated by
43     a source language processor.
44     
45     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
46     IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
47     FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
48     SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
49     FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
50     ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
51     DEALINGS IN THE SOFTWARE.
52 
53 Authors:
54 	Alexandru Ermicioi
55 **/
56 module aermicioi.aedi.factory;
57 
58 public import aermicioi.aedi.factory.factory;
59 public import aermicioi.aedi.factory.generic_factory;
60 public import aermicioi.aedi.factory.decorating_factory;
61 public import aermicioi.aedi.factory.proxy_factory;
62 public import aermicioi.aedi.factory.reference;
63 public import aermicioi.aedi.factory.wrapping_factory;