Re[6]: Refactoring: Extract Class
От: A.J. Россия CintaNotes
Дата: 12.11.04 19:21
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Вот я и должен иметь возможность любому параметру (как общему, так и параметру какого-то конкретного контура) назначить этот номер и по запросу без лишнего геммороя достать его значение.


Ты хочешь сказать у тебя параметры еще и динамические (т.е. во время работы программы кол-во параметров может меняться?).

А>Вот завел я в каком-нибудь из контуров новый параметр, дал ему Id и теперь хочу на ВУ системы (без переделок самого ВУ) поглядеть этот параметр. Ввел я в поле его Id нажал кнопочку и улетел запрос. Как это лучше сделать если параметры разбросаны по классам?


А!!! Вот теперь понял. Могу предложить такой вариант..
1) В контурах делаешь методы add/remove/has/get/setParam(id)
2) Делаешь класс CommonParams, обязанность которого — предоставлять доступ к общим параметрам, и в нем тоже методы add/remove/has/get/setParam(id). В принципе, если у тебя всего один набор общих параметов, его лучше сделать синглтоном.
3) Из ВУ в ControlObject приходит запрос на добавление нового параметра в контур. Этот запрос приходит с помощью вызова метода addParamToAlg(algName, paramId, paramValue). Объект ControlObject находит нужный Alg и добавляет к нему параметр c помощью вызова addParam(paramId, paramValue).
4) Из ВУ приходит запрос на добавление нового общего параметра, controlObject->addCommonParam(paramId, paramValue). Объект ControlObject вызывает CommonParams::add(paramId, paramValue).
5) Из ВУ приходит запрос на получения значения параметра с id=67. Этот запрос приходит с помощью вызова метода controlObject->getParamById(67). Объект ControlObject итерирует через все контуры и в CommonParams, вызывая у каждого hasParam(67) пока не будет возвращенно TRUE. Потом у этого контура вызывается getParam(67) и значение возвращается в ВУ.

Должно работать
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.