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;