Re[3]: Refactoring: Extract Class
От: Аноним  
Дата: 11.11.04 13:20
Оценка:
Здравствуйте, A.J., Вы писали:

AJ>Как насчет того, чтобы перенести методы, которые интенсивно используют эти атрибуты (данные), в классы, которые имеют эти атрибуты (данные)?

Именно так я и сделал. Сначала все было в одной куче, много данных и много методов, все в одном классе. Затем, логически сгруппированные методы переехали в собственные классы, соот-но прихватив с собой данные, которые они интенсивно юзают. И если раньше я мог получить любой параметр через:
struct PAR_MAP_ENTRY
{
  int   parId;
  void  *pVar;
};

const PAR_MAP_ENTRY ControlObject::parMap[] =
{
  {  1, &common.par1},
  {  2, &common.par2},
  //.........................
  { 10, &alg1.par1},
  //.........................
  { 20, &alg2.par1}
};

ControlObject::GetParam( int parId, void *pVal)
{
  // Ищем свой параметр в parMap[] и достаем значение по адресу
}

то теперь я могу такое делать лишь с оставшимися данными. Чужие просто в карту нельзя добавить, т.к. они private.


AJ>Или вынести эти методы в общий базовый класс, а данные получать через виртуальные set/get?

"Эти" это какие?

Если получать через вирт. set/get, то их надо реализовывать в каждом классе (и соот-но городить карту параметров тоже в каждом классе). Получается вариант 3 опять же.
Или Вы имели ввиду что-то другое?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.