63 std::cout <<
"=== Service Container Example ===\n\n";
69 std::cout <<
"1. Registering services...\n";
70 container.register_factory<
IGreeter>(
72 service_lifetime::singleton);
75 container.register_factory<
ICounter>(
77 service_lifetime::transient);
80 std::cout <<
"2. Resolving services...\n";
81 auto greeter = container.resolve<
IGreeter>();
84 std::cout <<
" " << greeter.value()->greet(
"Developer") <<
"\n";
88 auto greeter2 = container.resolve<
IGreeter>();
89 std::cout <<
"3. Singleton check: same instance = "
90 << (greeter.value().get() == greeter2.value().get() ?
"true" :
"false")
94 auto counter1 = container.resolve<
ICounter>();
95 auto counter2 = container.resolve<
ICounter>();
96 std::cout <<
"4. Transient check: counter1=" << counter1.value()->
next()
97 <<
", counter2=" << counter2.value()->
next() <<
"\n";
100 std::cout <<
"5. Creating scoped container...\n";
101 auto scope = container.create_scope();
104 std::cout <<
" Scope created successfully\n";
108 std::cout <<
"6. Freezing container for production...\n";
110 std::cout <<
" Frozen = " << (container.is_frozen() ?
"true" :
"false") <<
"\n";
113 auto services = container.registered_services();
114 std::cout <<
"7. Registered services: " << services.size() <<
"\n";
117 std::cout <<
"\nDone.\n";