Переключение на Главную Страницу Страницы: 1 [2]  ОтправитьПечать
Горячая тема (более 10 ответов) Реализация набора функйиональных модулей.. (число прочтений - 5057 )
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Реализация набора функйиональных модулей..
Ответ #15 - 26. Августа 2008 :: 09:02
Печать  
Пишите в багзиллу по модулю Опенконф.
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
CaBaT
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 718
Местоположение: Санкт-Петербург
Зарегистрирован: 26. Октября 2007
Пол: Мужской
Re: Реализация набора функйиональных модулей..
Ответ #16 - 24. Сентября 2008 :: 07:27
Печать  
Реализовал свою идею, может кому пригодиться:
1. есть класс "Модули",
 - в конструкторе при инициализации получает список всех классов и добавляет их имена в свой список динамических свойств
 - в классе есть переменная типа "СписокЗначений" - список объектов
2. в глобальном модуле создается глобальный объект "Модули"
3. в нужных местах обращаемся к произвольному классу в таком виде: Модули.НекийКласс.МетодКласса()
4. в классе "Модули" при обращении к динамическому свойству в списке объектов ищется объект по имени, если не найден, создается
5. таким образом в любом месте конфы могу использовать любой зарегистрированный класс, при этом существует только одна его копия

единственная оговорка: у меня некоторые классы имееют название вида "Система.Сервис", так вот точка удаляется из имени класса, т.е. обращаюсь к нему так: Модули.СистемаСервис.

ну еще минус один: не работает интелисенс, но с этим пока придется смириться.
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Реализация набора функйиональных модулей..
Ответ #17 - 24. Сентября 2008 :: 08:41
Печать  
Мне больше нравится чуть более гибкий подход-
1) переменная глГлобальныеОбъекты (Модули) создается пустая и полностью динамическая - т.е. без списка классов
2) пользователи этой переменной юзают код как обычно - глГлобальныеОбъекты.НужныйКласс.Метод
при этом если экземпляра нужного класса нет, то он создается.
Нет никакого ограничения в классах, как у тебя.

3) самое главное - путем глГлобальныеОбъекты.НужныйКласс = ОбъектНужногоКласса
можно установить любой уже подготовленный/сконструированный объект, например, с помощью спец. виртуальных конструкторов.

ИМХО это простой и более гибкий подход Улыбка
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
CaBaT
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 718
Местоположение: Санкт-Петербург
Зарегистрирован: 26. Октября 2007
Пол: Мужской
Re: Реализация набора функйиональных модулей..
Ответ #18 - 24. Сентября 2008 :: 08:59
Печать  
Подожди ка, насколько я понимаю в 3.0.1.14 и выше для динамических свойств нужно явное добавление в список?
Т.е. я же не могу обратиться к Модули.МойКласс предварительно не сделав Модули.ДобавитьДинамическоеСвойство("МойКласс")

а насчет инициализации объекта класса - мне просто это не было нужно, поэтому в методе присвоения свойства у меня пусто,
туда можно добавить код, который будет добавлять объект в список инициализированных
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Реализация набора функйиональных модулей..
Ответ #19 - 24. Сентября 2008 :: 09:48
Печать  
Да, по динамическим свойствам это так.
Но никто не мешает перед выполнением присвоения на новый объект выполнять ДобавитьДинамСвойство или сделать спец.метод для установки нового объекта.
А еще проще наследоваться от Структура с простым наследованием динамических свойств. Задача как раз идеально подходит под такое решение Улыбка
Где-то выше кто-то выложил ссылку на решение, описанное мной как раз для подобной задачи.
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
CaBaT
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 718
Местоположение: Санкт-Петербург
Зарегистрирован: 26. Октября 2007
Пол: Мужской
Re: Реализация набора функйиональных модулей..
Ответ #20 - 24. Сентября 2008 :: 10:49
Печать  
Один вопрос: насколько я понимаю, я не могу обратиться к объекту Модули.МойКласс, если перед этим я не добавил динамическое свойство "МойКласс" в классе "Модули", так?
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Реализация набора функйиональных модулей..
Ответ #21 - 24. Сентября 2008 :: 11:00
Печать  
Да, конечно Улыбка
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
CaBaT
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 718
Местоположение: Санкт-Петербург
Зарегистрирован: 26. Октября 2007
Пол: Мужской
Re: Реализация набора функйиональных модулей..
Ответ #22 - 24. Сентября 2008 :: 12:20
Печать  
Вот для этого я и сделал заполнение списка динамических свойств класса в конструкторе в соответствие со списком зарегистрированных классов.
Соответственно потом я могу легко обращаться как Модули.МойКласс, будучи уверенным, что такое динамическое свойство точно существует.
Конечно это не распространяется на классы, подключаемые динамически, но честно говоря все постоянно используемые классы обычно подключены штатно через prm-файлы.
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1 [2] 
ОтправитьПечать