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 moduleaermicioi.aedi.factory;
57 58 publicimportaermicioi.aedi.factory.factory;
59 publicimportaermicioi.aedi.factory.generic_factory;
60 publicimportaermicioi.aedi.factory.decorating_factory;
61 publicimportaermicioi.aedi.factory.proxy_factory;
62 publicimportaermicioi.aedi.factory.reference;
63 publicimportaermicioi.aedi.factory.wrapping_factory;