powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / интерфейсы, шаблоны и фабрики
39 сообщений из 39, показаны все 2 страниц
интерфейсы, шаблоны и фабрики
    #34096806
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть такая библиотека ibpp. Что-то я не пойму следующее:

Есть класс Ptr, шаблон класса T. Он перегружает много операторов. Есть интерфейс IDatabase. По ним построен класс Database:

Код: plaintext
1.
typedef Ptr<IDatabase> Database;

Теперь дальше. Есть класс DatabaseImpl, который наследуется от интерфейса:

Код: plaintext
1.
class DatabaseImpl : public IDatabase

А теперь внимание! Есть функция-фабрика, которая далает следующее:

Код: plaintext
1.
2.
3.
Database DatabaseFactory (...всякая шняга...) {
   return new DatabaseImpl(...тоже шняга...);
}

Как токое может быть? Почему возвращается Database, а не Database *?

Есть две мысли, но результатов не дают:
1. Ptr перегружает кучу операторов. Но здесь эти операторы не учавствуют, вроде. Так что это наверное не оно. Пробовал иммитировать ситуацию - не удалось.
2. Опрераторы Ptr дают основание пологать, что классы по этому шаблону получаются синглетонами. Но х.з. В программе можно использовать несколько объектов одного класса.

Вообще, хочу понять в чем дело и сымитировать ситуацию. Если надо что-то усточнить, вылочу необходимые исходники.
...
Рейтинг: 0 / 0
интерфейсы, шаблоны и фабрики
    #34096853
Фотография blinded
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тексты давай, прикольною но с первого взгляда вполне законная конструкция Ptr<T> - rfrjq-nj nbgbxysq смартпойтер. возвращают смартпойнер чтобы не вязатся с указателями и не иметь проблем с освобождением ресурсов, тут народ все по finally тосковал, вот вм типичное решение проблемы
Database db;
try
{
...
db = DatabaseFactory(...);
...
}
catch(...)
{
...
}

явный delete нигде не нужен, ибо при разрушении автоматической переменной вызовется delete
...
Рейтинг: 0 / 0
интерфейсы, шаблоны и фабрики
    #34096929
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот собстна ptr.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
	template <class T>
	class Ptr
	{
	private:
		T* mObject;

	public:
		void clear()
		{
			if (mObject !=  0 ) { mObject->Release(); mObject =  0 ; }
		}

		T* intf() const						{ return mObject; }
		T* operator->() const				{ return mObject; }

		bool operator==(const T* p) const	{ return mObject == p; }
		bool operator==(const Ptr& r) const	{ return mObject == r.mObject; }
		bool operator!=(const T* p) const	{ return mObject != p; }
		bool operator!=(const Ptr& r) const	{ return mObject != r.mObject; }

		Ptr& operator=(T* p)
		{
			// AddRef _before_ Release gives correct behaviour on self-assigns
			T* tmp = (p ==  0  ?  0  : p->AddRef());	// Take care of 0
			if (mObject !=  0 ) mObject->Release();
			mObject = tmp; return *this;
		}

		Ptr& operator=(const Ptr& r)
		{
			// AddRef _before_ Release gives correct behaviour on self-assigns
			T* tmp = (r.intf() ==  0  ?  0  : r->AddRef());// Take care of 0
			if (mObject !=  0 ) mObject->Release();
			mObject = tmp; return *this;
		}

		Ptr(T* p) : mObject(p ==  0  ?  0  : p->AddRef()) { }
		Ptr(const Ptr& r) : mObject(r.intf() ==  0  ?  0  : r->AddRef()) {  }

		Ptr() : mObject( 0 ) { }
		~Ptr() { clear(); }
	};


А это фабрика:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
	Database DatabaseFactory(const std::string& ServerName,
		const std::string& DatabaseName, const std::string& UserName,
		const std::string& UserPassword, const std::string& RoleName,
		const std::string& CharSet, const std::string& CreateParams)
	{
		(void)gds.Call();			// Triggers the initialization, if needed
		return new DatabaseImpl(ServerName, DatabaseName, UserName,
								UserPassword, RoleName, CharSet, CreateParams);
	}
...
Рейтинг: 0 / 0
интерфейсы, шаблоны и фабрики
    #34097241
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2blinded:
Мои-то вопросы актуальны...
...
Рейтинг: 0 / 0
интерфейсы, шаблоны и фабрики
    #34097317
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
это, кажется, называется конструктор копирования :)
...
Рейтинг: 0 / 0
интерфейсы, шаблоны и фабрики
    #34097321
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
или присваивания... не помню.
...
Рейтинг: 0 / 0
интерфейсы, шаблоны и фабрики
    #34097333
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maXmoэто, кажется, называется конструктор копирования :)

Ничего не понимаю.

При вызове фабрики, происходит динамическое создание объекта (new), который у меня в вызывающей функции становится статическим, и должен освободиться по выходу из нее [функции].

Как реализуется этот конструктор копирования?
Такая ли схема выделения памяти?
...
Рейтинг: 0 / 0
интерфейсы, шаблоны и фабрики
    #34097398
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
Database mydb=new DatabaseImpl(...шняга...);
вызывается не оператор присваивания, а конструктор копирования Ptr(T* p). То же самое при возврате из функции.
...
Рейтинг: 0 / 0
интерфейсы, шаблоны и фабрики
    #34097440
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maXmoвызывается не оператор присваивания, а конструктор копирования Ptr(T* p). То же самое при возврате из функции.

Что-то у меня такое не прокатывает:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
#include <stdio.h>

class AI {
    public:
	AI(){};
};

class Aimpl : public AI {
    public:
	Aimpl() {printf("cons\n");};
	~Aimpl() {printf("des\n");};
};

template <class T>
class Ptr {
    public:
	Ptr(){};
	Ptr& operator=(T* p)
		{
		return *this;
		}
};

typedef Ptr<AI> A;

int main () {
    A a = new Aimpl();

    return  0 ;
}
...
Рейтинг: 0 / 0
интерфейсы, шаблоны и фабрики
    #34097553
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот именно, потому что ты не объявил конструктор копирования.
...
Рейтинг: 0 / 0
интерфейсы, шаблоны и фабрики
    #34097610
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maXmoвот именно, потому что ты не объявил конструктор копирования.

Теперь понял, где он.

Значит, сначала вызывается выделяется память под DatabaseImpl, потом вызывается его конструктор. Далее, компилятор смотрит, что вернуть надо сам объект и ищет в нем конструктор копирования, если он найден, то будет вызыватья он. В итоге получается имитация создания локального объекта, который удалится при выходе из области видимости.

Вроде того?
...
Рейтинг: 0 / 0
интерфейсы, шаблоны и фабрики
    #34097729
вот именно, потому что ты не объявил конструктор копирования.

в примере выше есть конструктор копирования, только он неявно создан
не хватет конструктора преобразования типа:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
{...}

template <class T>
class Ptr
{
    public:
	Ptr(){};
	Ptr& operator=(T* p)
		{
		return *this;
		}

	Ptr(T* p){};
};

typedef Ptr<AI> A;

int main ()
{
    A a = new Aimpl(), b(a);

    return  0 ;
}

...
Рейтинг: 0 / 0
интерфейсы, шаблоны и фабрики
    #34097850
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Голенков Владимир вот именно, потому что ты не объявил конструктор копирования.

в примере выше есть конструктор копирования, только он неявно создан
не хватет конструктора преобразования типа:
...


Сложная схема получается.
Хотелось бы узнать, как с точки зрения компилятора работают эти конструкторы.
...
Рейтинг: 0 / 0
интерфейсы, шаблоны и фабрики
    #34097854
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akh, дебуг - наш бох, и step into - пророк Его.
...
Рейтинг: 0 / 0
интерфейсы, шаблоны и фабрики
    #34097885
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maXmoAkh, дебуг - наш бох, и step into - пророк Его.

Ладно, пасиб. Вообщем, открыли мне глаза, на чудо сие. Дальше и сам смогу разобраться. :)
...
Рейтинг: 0 / 0
интерфейсы, шаблоны и фабрики
    #34098654
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробовал заменить конструктор копирования на пустой конструктор и оператор присваивания:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
Ptr(T *p) {...}

//на

Ptr() {...}
Ptr operator=(T*p) {...}


Компилятор не пропускает создание объекта. Мне кажется, что это более наглядная запись. Но почему она не правельная?
...
Рейтинг: 0 / 0
интерфейсы, шаблоны и фабрики
    #34098666
Компилятор не пропускает создание объекта. Мне кажется, что это более наглядная запись. Но почему она не правельная?

потому-что

A a = new Aimpl();

это альтернативная запись для

A a( new Aimpl() ); // конструктор с одним параметром

а не оператор присваивания
...
Рейтинг: 0 / 0
интерфейсы, шаблоны и фабрики
    #34098717
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Голенков Владимир Компилятор не пропускает создание объекта. Мне кажется, что это более наглядная запись. Но почему она не правельная?

потому-что

A a = new Aimpl();

это альтернативная запись для

A a( new Aimpl() ); // конструктор с одним параметром

а не оператор присваивания

Именно с этого я задумался. Но тогда, этот конструктор обычный. Что в нем такого копировательного?

A a - создание нового объекта
a = ... - присвоение объекту чего-то
a = new Aimpl() - присвоение объекту одного класса, указателя объекта другого, т.е. A = Aimpl*. Для этого я и определил оператор.

A a( new Aimpl() ) - обычное использование констурктора (T*p)
A a() = new Aimpl - обычное использование конструктора () и оператор присваивания.

Т.е. эти две записи, мне говорят лишь о том, что если создаваемому локальному объекту присваивается, что-то. То компилятор, проверит, есть ли у него конструктор с одним этим парметром. Т.е. отдельная фича в использовании обычных конструкторов.

В эту схему может же вписаться и создание объекта без парматера и присвоение ему другого объекта(указателя)?
...
Рейтинг: 0 / 0
интерфейсы, шаблоны и фабрики
    #34098826
честно говоря я мало понял, что вы имеете в виду %)

позволю себе два замечания:

1) существуют четкие определения:

class X
{
X( const X& ); // копирующий конструктор
X& operator=( const X& ); // копирующее присваивание
};

2) присваивание и инициализация являются различными операциями
...
Рейтинг: 0 / 0
интерфейсы, шаблоны и фабрики
    #34099084
Фотография blinded
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
привет! я сразу извинияюсь, ибо хожу из дома по dial-up. а потому сидеть все время в сети не могу. значит эта штука называется smartpointer с подсчетом ссылок, счетчик ссылок внедрен в сам объект. поэтому классы которые являются парметрами шаблона должны быть отнаследованы от одного класса назоввем его RefCounter у которого и реализовано ведение счетчика ссылок. класс RefCounter довольно забавный, в методе Release он вызывает собственный деструктор....(ненавижу самострелов)
теперь что касается оператора return в DatabaseFactory
ход мысли такой
1) тюкю функция должна вернуть Ptr<Database> комнилер подставляет создает его из указателя на DataBaseImpl. Это возможно поскольку конструктор не объявлен expicit при этом счетчик ссылок инкрементируется на 1
2) чтобы можно было вернуть значение в вызывающий модуль вызывается конструктор копирования и создается еще один ptr и счетчик ссылок увеличивается еще на 1
3) разрушается объект созданный в п 1, счетчик ссылок декрементируется
4) присвается значение из временной переменной п 2 в автоматическую переменную в вызывающем модуле, счетчик ссылок инкрементируется
5) разрушается объект из п 2 сетчик ссылок декрементируется
...
Рейтинг: 0 / 0
интерфейсы, шаблоны и фабрики
    #34099681
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Голенков Владимирчестно говоря я мало понял, что вы имеете в виду %)

позволю себе два замечания:

1) существуют четкие определения:

class X
{
X( const X& ); // копирующий конструктор
X& operator=( const X& ); // копирующее присваивание
};

2) присваивание и инициализация являются различными операциями

Ответ на мой вопрос - именно п.2.
...
Рейтинг: 0 / 0
интерфейсы, шаблоны и фабрики
    #34099839
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
blinded...

Получается, в итоге, что это некий контейнер синглетона, работающий с ним по определенному интерфейсу? Т.е. некий враппер на синглетон? А функциональность статичности объектов с ним никак не связана, это лишь ограничение, навиваемое фабрикой?

Также фабрика абстрогирует создание синглетона и смартпоинтера, предоставляя просто статический объект.

Но я, что-то не пойму плюсов этой структуры... Не проще ли, нагляднее, и надежнее работать просто с классами DatabaseImpl, наследованными от интерфейсов?
...
Рейтинг: 0 / 0
интерфейсы, шаблоны и фабрики
    #34100066
Фотография blinded
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akh, нет там никакого синглетона. Синглетон обеспечивает единственность объекта класса в программе, в приведенном коде этого нет. Если ты повторно обратишсы к фабрике, то она с удовольствием создаст тебе еще один объект базы данных.
те код типа
Database db1 = DatabaseFactory(...);
Database db2 = DatabaseFactory(...);
if ( db1== db2 )
cout << "db1 & db2 are same"<< endl;
else
cout << "db1 & db2 deiffers" << endl;
всегда будет выдавать
db1 & db2 deiffers
это просто smartpointer? который позволяет позабыть о необходимости delete
...
Рейтинг: 0 / 0
интерфейсы, шаблоны и фабрики
    #34100127
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
blindedAkh, нет там никакого синглетона. Синглетон обеспечивает единственность объекта класса в программе, в приведенном коде этого нет. Если ты повторно обратишсы к фабрике, то она с удовольствием создаст тебе еще один объект базы данных.
те код типа
Database db1 = DatabaseFactory(...);
Database db2 = DatabaseFactory(...);
if ( db1== db2 )
cout << "db1 & db2 are same"<< endl;
else
cout << "db1 & db2 deiffers" << endl;
всегда будет выдавать
db1 & db2 deiffers
это просто smartpointer? который позволяет позабыть о необходимости delete

Смутила единственность объекта DatabaseImpl внутри Ptr<IDatabase>.

А что входит в понятие смартпоинтера? DatabaseImpl, Ptr<Idatabase> вместе с фабрикой?
...
Рейтинг: 0 / 0
интерфейсы, шаблоны и фабрики
    #34100178
Фотография blinded
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну я бы определил его так, класс шаблон, объекты которого используются только как автоматические переменные, ведут себя как обыкновенные указатели на класс-парметр шаблона. вся разумность этих указателей сводится к вызову деструктора в соотвествии с некоторй выбранной стратегией. стратегии бывают разные, например у auto_ptr ов( они же ведущие указатели) за разрушение объекта отвечает последний auto_ptr, которому было присвоено значение. в том случае который привел ты обект сам себя разрушает, как только счетчик ссылок на него достигает 0
ну а ежели хочешь подробнее - Александреску, там целая глава
...
Рейтинг: 0 / 0
интерфейсы, шаблоны и фабрики
    #34100326
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
blindedну я бы определил его так, класс шаблон, объекты которого используются только как автоматические переменные, ведут себя как обыкновенные указатели на класс-парметр шаблона. вся разумность этих указателей сводится к вызову деструктора в соотвествии с некоторй выбранной стратегией. стратегии бывают разные, например у auto_ptr ов( они же ведущие указатели) за разрушение объекта отвечает последний auto_ptr, которому было присвоено значение. в том случае который привел ты обект сам себя разрушает, как только счетчик ссылок на него достигает 0
ну а ежели хочешь подробнее - Александреску, там целая глава

Т.е. тоже самое, что и в ibpp, только удаление объекта возложено на шаблон-враппер. Но весь смысл его применения заключается только в том, чтобы он создавался статически. Т.е. необходимо создавать тоже что-то подобное фабрикам-функциям?

Александреску - "Современное проектирование на С++"?

ПС: Уже давно нашел банду четырех, но никак не могу для нее выделить время.
...
Рейтинг: 0 / 0
интерфейсы, шаблоны и фабрики
    #34101393
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
смартпоинтеры созданы для автоматизации подсчёта ссылок. Александреску не читал, но в Inside COM эта проблема поставлена хорошо.
...
Рейтинг: 0 / 0
интерфейсы, шаблоны и фабрики
    #34101404
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На каждый AddRef должен приходиться один Release и вручную сводить этот баланс - всё равно что явное управление памятью вместо сборки мусора.
...
Рейтинг: 0 / 0
интерфейсы, шаблоны и фабрики
    #34101423
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maXmoсмартпоинтеры созданы для автоматизации подсчёта ссылок. Александреску не читал, но в Inside COM эта проблема поставлена хорошо.

Тады, получается, синглетон включает в себя смартпоинтер.
...
Рейтинг: 0 / 0
интерфейсы, шаблоны и фабрики
    #34101581
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да не, не думаю, смартпоинтеры придумали для кома когда прогеры опухли везде писать эти AddRef и Release (это приводило к сложноотлавливаемым багам в виде утечки памяти).
...
Рейтинг: 0 / 0
интерфейсы, шаблоны и фабрики
    #34101661
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maXmoда не, не думаю, смартпоинтеры придумали для кома когда прогеры опухли везде писать эти AddRef и Release (это приводило к сложноотлавливаемым багам в виде утечки памяти).

Пока есть чуть времени открыл Александрески на смартпоинтерах. Вообщем, он излогает, что смартпоинтер решает задачу владения указателем на конкретный объект класса, представляя его единственным в программе. Отличие от синглетона, получается только в том, что синглетон, как я его понимаю, решает задачу владения указателем на единственный объект класса, обеспечивая эту самую единственность. Т.е. синглетон - частный случай смартпоинта. Разница только в статиках. У смартпоинтера стратегия и указатель на объект не статик, а у синглетона - статик. Вот и все. :)
...
Рейтинг: 0 / 0
интерфейсы, шаблоны и фабрики
    #34101669
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну, и еще стратегия у синглетона - одна, а у смартпоинтера могут быть разные.

По любому синглетон - частный случай смартпоинтера. ;)
...
Рейтинг: 0 / 0
интерфейсы, шаблоны и фабрики
    #34102279
Фотография blinded
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AkhНу, и еще стратегия у синглетона - одна, а у смартпоинтера могут быть разные.

По любому синглетон - частный случай смартпоинтера. ;)
неправильно ты понял. ты почему то смотришь на код, код деуствительно может быть похож. идеи абсолютно разные. сматпойнтеры используются исключительно для автоматизации управления ресурсами. синглетон же нужен для обеспечения единственнвенности объекта класса, смомента первого обращения к нему и до завершения программы. единственное что их роднит - это что оба они шпблонные врапперы, но не более того.
кстати смартпойнтеры никакого отношения к COM не имеют, не надо приписывать все заслуги дяде Билли.
...
Рейтинг: 0 / 0
интерфейсы, шаблоны и фабрики
    #34102730
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AkhПо любому синглетон - частный случай смартпоинтера. ;)

Угум, особливо синглетон Майерса
Ты как-то не очень внимательно читал Александреску :( Та ДУРНАЯ реализация, что предложила банда, отнюдь не единственно возможная реализация синглетона
...
Рейтинг: 0 / 0
интерфейсы, шаблоны и фабрики
    #34102887
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
blinded AkhНу, и еще стратегия у синглетона - одна, а у смартпоинтера могут быть разные.

По любому синглетон - частный случай смартпоинтера. ;)
неправильно ты понял. ты почему то смотришь на код, код деуствительно может быть похож. идеи абсолютно разные. сматпойнтеры используются исключительно для автоматизации управления ресурсами. синглетон же нужен для обеспечения единственнвенности объекта класса, смомента первого обращения к нему и до завершения программы. единственное что их роднит - это что оба они шпблонные врапперы, но не более того.
кстати смартпойнтеры никакого отношения к COM не имеют, не надо приписывать все заслуги дяде Билли.

Ладно. Раз, говоришь, не правельно предствставляю, значит так оно есть. Надо больше книжки читать.

Позволю себе замечание: я не на код смотрю, а на средства, или методики, которые они используют. Т.е. пытаюсь разбить на шаблон на части, и провести между ними параллель. Например, смартпоинтер (владение объектом) использует стратегию передачи/владения объектом и его интерфейс (к примеру), а синглетон (ограничитель количества объектов класса) использует стратегию и тоже интерфейс. Это примерный, мною представляемый вид. Отсюда я и веду параллели.
Ну, а для конструктивного разговора на эту тему, у меня, видать не достаточно знаний. :)
...
Рейтинг: 0 / 0
интерфейсы, шаблоны и фабрики
    #34102898
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gluk (Kazan) AkhПо любому синглетон - частный случай смартпоинтера. ;)

Угум, особливо синглетон Майерса
Ты как-то не очень внимательно читал Александреску :( Та ДУРНАЯ реализация, что предложила банда, отнюдь не единственно возможная реализация синглетона

Совственно, я из Александреску читаю с вчерашнего дня только главу интеллектуальных указателей, а из банды еще не успел ни одного шаблона прочитать. К сожалению, не распалогаю таким объемом времени, необходимым для прочтения этих книг. Вот и читаю урывками "по ситуации".
...
Рейтинг: 0 / 0
интерфейсы, шаблоны и фабрики
    #34103289
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Akh

Обязательно прочитай и ту и другую до конца хотя бы один раз. Они стоят того чтобы потратить на них время.

IMHO КОНЦЕПТУАЛЬНО синглетон и прокси не имеют ничего общего, но некоторые реализации синглетона могут быть похожи на прокси
...
Рейтинг: 0 / 0
интерфейсы, шаблоны и фабрики
    #34103323
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gluk (Kazan)2 Akh

Обязательно прочитай и ту и другую до конца хотя бы один раз. Они стоят того чтобы потратить на них время.

IMHO КОНЦЕПТУАЛЬНО синглетон и прокси не имеют ничего общего, но некоторые реализации синглетона могут быть похожи на прокси

Найду, потрачу. :)

На счет концептуально не спорю, имею ввиду логическую структуру. Но надо начитаться, чтобы иметь четкое представление идеологии обсуждаемых шаблонов.
...
Рейтинг: 0 / 0
интерфейсы, шаблоны и фабрики
    #34103331
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так я не могу квалифицированно приводить свои доводы.
...
Рейтинг: 0 / 0
39 сообщений из 39, показаны все 2 страниц
Форумы / C++ [игнор отключен] [закрыт для гостей] / интерфейсы, шаблоны и фабрики
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]