котта Мейерса (Scott Meyers).

Автор admin Четверг, 18 июня 2009 11:32

котта Мейерса (Scott Meyers). 480 Глава 10 • Паттерны проектирования } int getValueO { return i; } void setValue(int x) { i = x: } }: int mainO { Singleton& s = Singleton::instance(); cout « s.getValueO « endl: Singleton& s2 = Singleton::instance(): s2.setValue(9): cout « s.getValueO « endl: } ///:- Особенно интересная ситуация возникает тогда, когда два Синглета зависят друг от друга: //: СЮ: Functi onStati cSi ngl eton. cpp class Singletonl { SingletonlO {} public: static Singletonl& refO { static Singletonl single: return single; } }: class Singleton2 { Singletonl& si: Singleton2(Singletonl& s) : sl(s) {} public: static Singleton2& refO { static Singleton2 single(Singletonl::ref()): return single: } Singletonl& fO { return si: } }: int mainO { Singletonl& si = Singleton2::ref().f(): } III:- Вызов Singleton2::ref() приводит к созданию синглетного объекта Singleton2. В процессе создания вызывается функция Singletonl::ref(), а это требует создания синглетного объекта Singletonl. Такая методика не зависит от порядка компоновки или загрузки, поэтому программист гораздо лучше контролирует процесс инициали


Комментарии закрыты.