На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела:
1. Название темы - краткое описание кто/что против кого/чего
2. В первом сообщении - список параметров, по которым идет сравнение.
3. Старайтесь аргументировать свои высказывания. Фразы типа "Венда/Слюникс - ацтой" считаются флудом.
4. Давайте жить дружно и не доводить обсуждение до маразма и личных оскорблений.
Модераторы: Модераторы, Комодераторы
Страницы: (495) « Первая ... 78 79 [80] 81 82 ...  494 495  ( Перейти к последнему сообщению )  
> Delphi vs C++ vs C# , ну и Java немножко, где-то ближе к старшему байту номеров страниц
    Цитата D_KEY @
    Один вопрос. Почему без шаблонов, собственно?


    Потому что сравниваем объектные модели, а шаблоны/дженерики к ним отношения не имеют. Можешь использовать с++ или c# - что больше нравится.

    Цитата D_KEY @
    И уж странное у тебя мнение о Delphi, любой язык с развитыми средствами RTTI и рефлексии сможет это сделать.


    Ну давай, бери c# - там рефлексия гораздо более развитая чем в Delphi ;)

    Цитата D_KEY @
    когда можно(а следовательно и нужно) сделать все в момент компиляции?


    Инстанцировать объект в момент компиляции? :D :blink: Ну шаман!

    Цитата D_KEY @
    Откуда базовый-то класс будет знать, что нужно такое странное поведение ?


    Т.е. поведение, что документ после создания не должен быть помечен как модифицированный - странное? ЛОЛ :lol: D_KEY, ну такой нонконформизм - это уже в стиле другого моего оппонента, ты вроде за подобным раньше замечен не был ;)
      Цитата D_KEY @
      Не понял. Дело в унаследовании такого поведения.

      а в чем проблема?

      Добавлено
      Цитата D_KEY @
      Не понадобится - не будет инстанцирования. О чем ты?

      как можно в компайле угадать необходимость инстанцирования по рантайм-условиям?
        Цитата korvin @
        заодно и на C#, однако к чему это? все уже сравнено до нас


        На delphi там наигалимейшая реализация, я бы руки вырвал тому кто ее написал. Там не соблюдается условие унаследоваться и порядок. GetInstance возвращает конкретный тип - TSingleton. И исключение при вызове конструктора - это :wacko: Что это за запрет создания такой - вызывать исключение?
          Цитата --Ins-- @
          Инстанцировать объект в момент компиляции? :D :blink: Ну шаман!

          ничего сложного. хотя для делфистов возможно да, звучит магически
            Цитата --Ins-- @
            Цитата D_KEY @
            Один вопрос. Почему без шаблонов, собственно?


            Потому что сравниваем объектные модели, а шаблоны/дженерики к ним отношения не имеют. Можешь использовать с++ или c# - что больше нравится.

            А причем тут объектная модель?

            Цитата
            Цитата D_KEY @
            И уж странное у тебя мнение о Delphi, любой язык с развитыми средствами RTTI и рефлексии сможет это сделать.


            Ну давай, бери c# - там рефлексия гораздо более развитая чем в Delphi ;)
            Пусть этим займется тот, кто пишет на этом языке профессионально ;)
            Посмотреть будет интересно.
            Еще потом можно добавить поддержку многопоточности и т.п.

            Цитата
            Цитата D_KEY @
            когда можно(а следовательно и нужно) сделать все в момент компиляции?


            Инстанцировать объект в момент компиляции? :D :blink: Ну шаман!
            Ты о чем?
            На этапе компиляции нужно сформировать необходимые классы, чтобы не хранить лишнюю информацию и не выполнять лишних действий во время выполнения.

            Цитата
            Цитата D_KEY @
            Откуда базовый-то класс будет знать, что нужно такое странное поведение ?


            Т.е. поведение, что документ после создания не должен быть помечен как модифицированный - странное?

            Странно - откатывать действия, предусмотренные разработчиком метода базового класса, опираясь на их конкретную реализацию.
              Цитата --Ins-- @
              На delphi там наигалимейшая реализация, я бы руки вырвал тому кто ее написал. Там не соблюдается условие унаследоваться и порядок. GetInstance возвращает конкретный тип - TSingleton. И исключение при вызове конструктора - это :wacko: Что это за запрет создания такой - вызывать исключение?

              ну вот и покажи как надо, заодно и вику поправь =))
                Цитата korvin @
                ничего сложного.


                Ага, особенно когда условие инстанцировать или нет только в рантайм появляется :D
                  Цитата --Ins-- @
                  Т.е. поведение, что документ после создания не должен быть помечен как модифицированный - странное?
                  Странно то, что документ вообще должен заниматся историей своих состояний.
                    Цитата D_KEY @
                    А причем тут объектная модель?


                    Ну вот и увидишь ;) Реализуешь без шаблонов/дженериков? Рефлексию и метаданные использовать можно (но я не буду ;) )

                    Цитата D_KEY @
                    Еще потом можно добавить поддержку многопоточности и т.п.


                    Запросто :)

                    Цитата korvin @
                    ну вот и покажи как надо


                    У меня в блоге есть реализация, а вики править - не, это дело неблагодарное :)
                      Цитата --Ins-- @
                      Ты про полиморфизм что-нибудь слышал? ;) Если я эту задачу могу решить абстрактно, чтобы потомки только конкретизировали в отдельных точках, то почему бы и нет? Заметь, я не говорю о вызовах вирт. методов или что-то в этом роде. Полиморфизм тут и без этого достигается

                      Интересно чем достигается? И как может быть вызов конструкторов правильным и считаться полиморфизмом, если для производного класса сначало вызывается, его конструктор, а уж потом конструктор базового ?
                      Да и вообще я тебя спрашиваю, намекая на то, что твоя логика работы создания документа, должна быть вызвана не из конструктора, потому как дело конструктора создать объект и инициализировать его начальными значениями. А ты мне втираешь про полиморфиз конструкторов, которым там и не пахнет ;)
                        Цитата KILLER @
                        если для производного класса сначало вызывается, его конструктор, а уж потом конструктор базового ?


                        Не в этом случае ;) Сначала базового, потом - свой. Это просто AfterConstruction в любом случае будет вызван после всего. Ну так это и не конструктор строго говоря. ;)
                          Цитата --Ins-- @
                          Цитата D_KEY @
                          А причем тут объектная модель?


                          Ну вот и увидишь ;) Реализуешь без шаблонов/дженериков? Рефлексию и метаданные использовать можно (но я не буду ;) )

                          Так покажи, что ли. Я может уже видел твою реализацию, да забыл :)

                          Цитата
                          Цитата korvin @
                          ну вот и покажи как надо


                          У меня в блоге есть реализация, а вики править - не, это дело неблагодарное :)

                          Зря ты так. Дело полезное, правда я всегда ленюсь.

                          Добавлено
                          Цитата --Ins-- @
                          Цитата KILLER @
                          если для производного класса сначало вызывается, его конструктор, а уж потом конструктор базового ?


                          Не в этом случае ;) Сначала базового, потом - свой.

                          А как же инициализация полей :o ? А может у меня базовый класс вызывает виртуальные методы? А может потом начнет? Точно не вызывает? Точно не начнет?
                          :lool:
                            Цитата --Ins-- @
                            Ага, особенно когда условие инстанцировать или нет только в рантайм появляется :D

                            естественно в этом случае нужно инстанциировать в рантайме, не паясничай =)
                            Сообщение отредактировано: korvin -
                              Цитата --Ins-- @
                              Не в этом случае ;) Сначала базового, потом - свой. Это просто AfterConstruction в любом случае будет вызван после всего. Ну так это и не конструктор строго говоря. ;)

                              Ну вот ты сам и ответил на свой же вопрос, твой AfterConstruction нужен для того чтобы гарантировано иметь блок, который выполнится после какихто действий... Тоесть это другими словами - костыль, который ты пытаешься превратить в конфетку
                                Цитата D_KEY @
                                Так покажи, что ли. Я может уже видел твою реализацию, да забыл


                                http://ins911.blogspot.com/2008/12/singletone-delphi.html - решение для D7, для более поздних имеет смысл список сделать классовой переменной. Для еще более поздних - таки да, возможны дженерики :) Но фишка - это то, что и без дженериков - чисто на переопределении NewInstance.

                                Работает это так: не секрет что при конструировании любого объекта в первую очередь вызывается неявно метод TObject.NewInstance, который собственно выделяет память под экземпляр и возвращает ссылку на него. Этот метод виртуальный, что открывает большие перспективы. В частности, в данном классе логика его работы переопределена - если первый вызов - создаем экземпляр как раньше, т.е. вызываем унаследованную реализацию. Если же экземпляр уже был создан, то вместо этого просто возвращаем ссылку на него. При использовании же вызываем обычный конструктор. Я для наглядности ввел конструктор с названием GetInstance (название лучше отражает поведение, чем Create), а собственно Create - скрыл и сделал виртуальным, чтобы наследник переопределив его реализацию указал что должно произойти именно в момент создания (а не получения ссылки) первого и единственного экземпляра. Синглетон можно уничтожить явно, вызвав Free, а если нет - то он уничтожится автоматически.
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:
                                Страницы: (495) « Первая ... 78 79 [80] 81 82 ...  494 495


                                Рейтинг@Mail.ru
                                [ Script execution time: 0.1921 ]   [ 15 queries used ]   [ Generated: 29.07.26, 22:44 GMT ]