Delphi vs C++ vs C#
, ну и Java немножко, где-то ближе к старшему байту номеров страниц
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
| ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
| [216.73.216.192] |
|
|
Правила раздела:
| Страницы: (495) « Первая ... 78 79 [80] 81 82 ... 494 495 ( Перейти к последнему сообщению ) |
Delphi vs C++ vs C#
, ну и Java немножко, где-то ближе к старшему байту номеров страниц
|
Сообщ.
#1186
,
|
|
|
|
Потому что сравниваем объектные модели, а шаблоны/дженерики к ним отношения не имеют. Можешь использовать с++ или c# - что больше нравится. Цитата D_KEY @ И уж странное у тебя мнение о Delphi, любой язык с развитыми средствами RTTI и рефлексии сможет это сделать. Ну давай, бери c# - там рефлексия гораздо более развитая чем в Delphi Инстанцировать объект в момент компиляции? Ну шаман!Т.е. поведение, что документ после создания не должен быть помечен как модифицированный - странное? ЛОЛ D_KEY, ну такой нонконформизм - это уже в стиле другого моего оппонента, ты вроде за подобным раньше замечен не был |
|
Сообщ.
#1187
,
|
|
|
|
|
Сообщ.
#1188
,
|
|
|
|
На delphi там наигалимейшая реализация, я бы руки вырвал тому кто ее написал. Там не соблюдается условие унаследоваться и порядок. GetInstance возвращает конкретный тип - TSingleton. И исключение при вызове конструктора - это Что это за запрет создания такой - вызывать исключение? |
|
Сообщ.
#1189
,
|
|
|
|
Цитата --Ins-- @ Инстанцировать объект в момент компиляции? Ну шаман!ничего сложного. хотя для делфистов возможно да, звучит магически |
|
Сообщ.
#1190
,
|
|
|
|
Цитата --Ins-- @ Потому что сравниваем объектные модели, а шаблоны/дженерики к ним отношения не имеют. Можешь использовать с++ или c# - что больше нравится. А причем тут объектная модель? Цитата Пусть этим займется тот, кто пишет на этом языке профессионально Цитата D_KEY @ И уж странное у тебя мнение о Delphi, любой язык с развитыми средствами RTTI и рефлексии сможет это сделать. Ну давай, бери c# - там рефлексия гораздо более развитая чем в Delphi Посмотреть будет интересно. Еще потом можно добавить поддержку многопоточности и т.п. Цитата Ты о чем?Инстанцировать объект в момент компиляции? Ну шаман!На этапе компиляции нужно сформировать необходимые классы, чтобы не хранить лишнюю информацию и не выполнять лишних действий во время выполнения. Цитата Т.е. поведение, что документ после создания не должен быть помечен как модифицированный - странное? Странно - откатывать действия, предусмотренные разработчиком метода базового класса, опираясь на их конкретную реализацию. |
|
Сообщ.
#1191
,
|
|
|
|
Цитата --Ins-- @ На delphi там наигалимейшая реализация, я бы руки вырвал тому кто ее написал. Там не соблюдается условие унаследоваться и порядок. GetInstance возвращает конкретный тип - TSingleton. И исключение при вызове конструктора - это Что это за запрет создания такой - вызывать исключение?ну вот и покажи как надо, заодно и вику поправь =)) |
|
Сообщ.
#1192
,
|
|
|
|
Цитата korvin @ ничего сложного. Ага, особенно когда условие инстанцировать или нет только в рантайм появляется |
|
Сообщ.
#1193
,
|
|
|
|
Цитата --Ins-- @ Странно то, что документ вообще должен заниматся историей своих состояний. Т.е. поведение, что документ после создания не должен быть помечен как модифицированный - странное? |
|
Сообщ.
#1194
,
|
|
|
|
Цитата D_KEY @ А причем тут объектная модель? Ну вот и увидишь Реализуешь без шаблонов/дженериков? Рефлексию и метаданные использовать можно (но я не буду )Цитата D_KEY @ Еще потом можно добавить поддержку многопоточности и т.п. Запросто ![]() Цитата korvin @ ну вот и покажи как надо У меня в блоге есть реализация, а вики править - не, это дело неблагодарное |
|
Сообщ.
#1195
,
|
|
|
|
Цитата --Ins-- @ Ты про полиморфизм что-нибудь слышал? Если я эту задачу могу решить абстрактно, чтобы потомки только конкретизировали в отдельных точках, то почему бы и нет? Заметь, я не говорю о вызовах вирт. методов или что-то в этом роде. Полиморфизм тут и без этого достигаетсяИнтересно чем достигается? И как может быть вызов конструкторов правильным и считаться полиморфизмом, если для производного класса сначало вызывается, его конструктор, а уж потом конструктор базового ? Да и вообще я тебя спрашиваю, намекая на то, что твоя логика работы создания документа, должна быть вызвана не из конструктора, потому как дело конструктора создать объект и инициализировать его начальными значениями. А ты мне втираешь про полиморфиз конструкторов, которым там и не пахнет |
|
Сообщ.
#1196
,
|
|
|
|
Цитата KILLER @ если для производного класса сначало вызывается, его конструктор, а уж потом конструктор базового ? Не в этом случае Сначала базового, потом - свой. Это просто AfterConstruction в любом случае будет вызван после всего. Ну так это и не конструктор строго говоря. |
|
Сообщ.
#1197
,
|
|
|
|
Цитата --Ins-- @ Цитата D_KEY @ А причем тут объектная модель? Ну вот и увидишь Реализуешь без шаблонов/дженериков? Рефлексию и метаданные использовать можно (но я не буду )Так покажи, что ли. Я может уже видел твою реализацию, да забыл Цитата Цитата korvin @ ну вот и покажи как надо У меня в блоге есть реализация, а вики править - не, это дело неблагодарное ![]() Зря ты так. Дело полезное, правда я всегда ленюсь. Добавлено Цитата --Ins-- @ Цитата KILLER @ если для производного класса сначало вызывается, его конструктор, а уж потом конструктор базового ? Не в этом случае Сначала базового, потом - свой.А как же инициализация полей ? А может у меня базовый класс вызывает виртуальные методы? А может потом начнет? Точно не вызывает? Точно не начнет? |
|
Сообщ.
#1198
,
|
|
|
|
Цитата --Ins-- @ Ага, особенно когда условие инстанцировать или нет только в рантайм появляется ![]() естественно в этом случае нужно инстанциировать в рантайме, не паясничай =) |
|
Сообщ.
#1199
,
|
|
|
|
Цитата --Ins-- @ Не в этом случае Сначала базового, потом - свой. Это просто AfterConstruction в любом случае будет вызван после всего. Ну так это и не конструктор строго говоря. ![]() Ну вот ты сам и ответил на свой же вопрос, твой AfterConstruction нужен для того чтобы гарантировано иметь блок, который выполнится после какихто действий... Тоесть это другими словами - костыль, который ты пытаешься превратить в конфетку |
|
Сообщ.
#1200
,
|
|
|
|
Цитата D_KEY @ Так покажи, что ли. Я может уже видел твою реализацию, да забыл http://ins911.blogspot.com/2008/12/singletone-delphi.html - решение для D7, для более поздних имеет смысл список сделать классовой переменной. Для еще более поздних - таки да, возможны дженерики Но фишка - это то, что и без дженериков - чисто на переопределении NewInstance. Работает это так: не секрет что при конструировании любого объекта в первую очередь вызывается неявно метод TObject.NewInstance, который собственно выделяет память под экземпляр и возвращает ссылку на него. Этот метод виртуальный, что открывает большие перспективы. В частности, в данном классе логика его работы переопределена - если первый вызов - создаем экземпляр как раньше, т.е. вызываем унаследованную реализацию. Если же экземпляр уже был создан, то вместо этого просто возвращаем ссылку на него. При использовании же вызываем обычный конструктор. Я для наглядности ввел конструктор с названием GetInstance (название лучше отражает поведение, чем Create), а собственно Create - скрыл и сделал виртуальным, чтобы наследник переопределив его реализацию указал что должно произойти именно в момент создания (а не получения ссылки) первого и единственного экземпляра. Синглетон можно уничтожить явно, вызвав Free, а если нет - то он уничтожится автоматически. |