int main(int argc, char const *argv[]) { IFactory* factory = new UndergraduateFactory(); LeiFeng* student = factory->CreateLeiFeng(); student->BuyRice(); student->Sweep(); student->Wash(); return 0; }
Operation* FactoryMgr::createOperate(int id) { if (id <= OPER_INVALID || id >= OPER_NUM) { return NULL; } IFactory *pFactory = pFactoryArry[id]; if (NULL == pFactory) { return NULL; } return pFactory->createOperate(); }
int main(int argc, char* argv[]) { // 스타일을 묶어서 한번에 선택 IFactory* factory; if (strcmp(argv[1], "--style=GTK")) factory = new GTKFactory; else if (strcmp(argv[1], "--style=XP")) factory = new XPFactory; // 이제 진짜 객체 생성 IButton* p1 = factory->createButton(); IEdit* p2 = factory->createEdit(); //... }
int main() { LinuxFactory* linuxFactory = new (LinuxFactory); IFactory* ifactory = &linuxFactory->ifactory; IWidget* iwidget = ifactory->createWidget(ifactory); iwidget->show(iwidget); IButton* ibutton = ifactory->createButton(ifactory); ibutton->click(ibutton); delete (LinuxWidget, container_of(iwidget, LinuxWidget, iwidget)); delete (LinuxButton, container_of(ibutton, LinuxButton, ibutton)); MacFactory* macFactory = new (MacFactory); ifactory = &macFactory->ifactory; iwidget = ifactory->createWidget(ifactory); iwidget->show(iwidget); ibutton = ifactory->createButton(ifactory); ibutton->click(ibutton); delete (MacWidget, container_of(iwidget, MacWidget, iwidget)); delete (MacButton, container_of(ibutton, MacButton, ibutton)); WindowsFactory* windowsFactory = new (WindowsFactory); ifactory = &windowsFactory->ifactory; iwidget = ifactory->createWidget(ifactory); iwidget->show(iwidget); ibutton = ifactory->createButton(ifactory); ibutton->click(ibutton); delete (WindowsWidget, container_of(iwidget, WindowsWidget, iwidget)); delete (WindowsButton, container_of(ibutton, WindowsButton, ibutton)); delete (LinuxFactory, linuxFactory); delete (MacFactory, macFactory); delete (WindowsFactory, windowsFactory); return 0; }
int main() { IFactory *fact = GetFactory:: SeleteFactory(FactoryList::MsFactory); IToolBar *toolbar = fact->CreateToolBar(); toolbar->CreateToolBar(); IMenuBar *menubar = fact->CreateMenuBar(); menubar->CreateMenuBar(); IStatusBar *statusbar = fact->CreateStatusBar(); statusbar->CreateStatusBar(); delete fact; delete toolbar; delete menubar; delete statusbar; return 0; }
void test009() { #ifdef ENABLE_LOADER IServiceManager* servmgr; IObject* obj; IFactory* loaderfactory; IModuleLoader* loader; ITestComponent* test; servmgr = XPLC_getServiceManager(); ASSERT(servmgr != 0, "could not obtain service manager"); obj = servmgr->getObject(XPLC_moduleLoader); ASSERT(obj != 0, "could not obtain module loader component"); loaderfactory = mutate<IFactory>(obj); ASSERT(loaderfactory != 0, "factory does not have expected interface"); obj = loaderfactory->createObject(); ASSERT(obj != 0, "could not create module loader component"); ASSERT(loaderfactory->release() == 1, "factory has wrong refcount"); loader = mutate<IModuleLoader>(obj); ASSERT(loader != 0, "module loader does not have expected interface"); loader->setModuleDirectory("."); obj = loader->getObject(TestComponent_CID); ASSERT(obj != 0, "could not create test object"); test = mutate<ITestComponent>(obj); ASSERT(test != 0, "test object did not have expected interface"); ASSERT(test->getAnswer() == 42, "test object did not have expected behavior"); VERIFY(test->release() == 1, "test object has wrong refcount"); VERIFY(loader->release() == 0, "incorrect refcount on module loader"); VERIFY(servmgr->release() == 0, "service manager has non-zero refcount after release"); #endif }
ErrorCode ComponentManager::CreateInstance( CID cid, IID iid, void **object ) { TRACE_BEGIN( LOG_LVL_NOISE ); ErrorCode result = kNoError; IFactory *factory; result = GetService( cid, IFactory::getIID(), (void**)&factory ); LOG( "GetService result %d", result ); if ( result == kNoError ) { result = factory->CreateInstance( cid, iid, object ); factory->Release(); } else result = kNoFactory; return result; }
int main() { IColor* p = NULL; IFactory* f = NULL; f = new Factory(); p = f->Create("Red"); cout << "\nColor is: " << p->Color() << "\n"; delete p; p = f->Create("Yellow"); cout << "\nColor is: " << p->Color() << "\n"; delete p; p = f->Create("Black"); cout << "\nColor is: " << p->Color() << "\n"; delete p; system("pause"); return 0; }
void test() { IServiceManager* servmgr; IFactory* dynfactory; IObject* obj; ISimpleDynamicLoader* dyn; ITestComponent* test; const char* err; servmgr = XPLC::getServiceManager(); ASSERT(servmgr != 0, "could not obtain service manager"); obj = servmgr->getObject(XPLC::simpleDynamicLoader); ASSERT(obj != 0, "could not obtain simple dynamic loader component"); dynfactory = mutateInterface<IFactory>(obj); ASSERT(dynfactory != 0, "factory does not have expected interface"); obj = dynfactory->createObject(); ASSERT(obj != 0, "could not create simple dynamic loader component"); dyn = mutateInterface<ISimpleDynamicLoader>(obj); ASSERT(dyn != 0, "simple dynamic loader does not have expected interface"); err = dyn->loadModule("tests/test005/testobj"); ASSERT(!err, err); obj = dyn->createObject(); ASSERT(obj != 0, "could not create test object"); test = mutateInterface<ITestComponent>(obj); ASSERT(test != 0, "test object did not have expected interface"); ASSERT(test->getAnswer() == 42, "test object did not have expected behavior"); VERIFY(test->release() == 0, "test object has wrong refcount"); servmgr->shutdown(); VERIFY(servmgr->release() == 0, "service manager has non-zero refcount after shutdown/release"); }
void test003() { IFactory* factory; IObject* obj; ITestInterface* test; obj = new GenericFactory(testfactory); ASSERT(obj != 0, "could not instantiate generic factory"); factory = mutate<IFactory>(obj); ASSERT(factory != 0, "factory does not have expected interface"); obj = factory->createObject(); ASSERT(obj != 0, "factory did not create test object"); test = mutate<ITestInterface>(obj); ASSERT(test != 0, "test object does not have expected interface"); VERIFY(test->release() == 0, "test object has non-zero refcount after release"); VERIFY(factory->release() == 0, "factory has non-zero refcount after release"); xplcdelete test; }
sp<MediaPlayerBase> MediaPlayerFactory::createPlayer( player_type playerType, void* cookie, notify_callback_f notifyFunc, pid_t pid) { sp<MediaPlayerBase> p; IFactory* factory; status_t init_result; Mutex::Autolock lock_(&sLock); if (sFactoryMap.indexOfKey(playerType) < 0) { ALOGE("Failed to create player object of type %d, no registered" " factory", playerType); return p; } factory = sFactoryMap.valueFor(playerType); CHECK(NULL != factory); p = factory->createPlayer(pid); if (p == NULL) { ALOGE("Failed to create player object of type %d, create failed", playerType); return p; } init_result = p->initCheck(); if (init_result == NO_ERROR) { p->setNotifyCallback(cookie, notifyFunc); } else { ALOGE("Failed to create player object of type %d, initCheck failed" " (res = %d)", playerType, init_result); p.clear(); } return p; }
int main(int argc, char** argv) { XPButton* button = new XPButton; button.draw(); IButton* button; IEdit* editBox; if (strcmp(argv[1], "--style=GTK") == 0) { button = new GTKButton; editBox = new GTKEdit; } else { button = new XPButton; editBox = new XPEdit; } IFactory* p; if (strcmp(argv[1], "--style=GTK") == 0) p = new GTKFactory; else p = new XPFactory; IButton* pBtn = p->CreateButton(); pBtn->Draw(); };