abstractFactoryMode