int main(int argc, char const *argv[])
{
	IFactory* factory = new UndergraduateFactory();
	LeiFeng* student = factory->CreateLeiFeng();

	student->BuyRice();
	student->Sweep();
	student->Wash();

	return 0;
}
Beispiel #2
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();
	//...
}
Beispiel #4
0
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;
}
Beispiel #6
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
}
Beispiel #7
0
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;	
}
Beispiel #8
0
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;
}
Beispiel #9
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");
}
Beispiel #10
0
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();
};