Место для метода, имеющего дело с двумя классами? - PullRequest
1 голос
/ 03 августа 2011

У меня часто есть методы, которые должны знать структуру двух классов.Например, некоторый класс Table, который можно записать в класс ExcelDoc.

Метод написания таблиц для превосходных документов должен знать структуру обоих.Оба могут изменяться и, возможно, даже иметь несколько реализаций Table1, Table2, Excel1, Excel2, которые все предоставляют некоторый базовый интерфейс.

Теперь я мог бы либо реализовать

ExcelDoc.write_data(table)

или

Table.write_to(excel)

или я мог бы даже создать промежуточный класс

TableToExcel.write(excel, table)

или я мог бы получить от классов и ...

Как вы думаете, что является лучшим дизайном, если я хочу оптимальныйдизайн для дальнейшего развития и особенности?

1 Ответ

1 голос
/ 03 августа 2011

Если вы можете представлять данные для записи в некоторой промежуточной форме, то оба ваших класса, т. Е. Excel и Table, могут использовать одно и то же представление.т.е. Excel.write_data (data_in_intermediate_form) и Table.write_data (data_in_intermediate_form).

В противном случае Table и Excel имеют известный интерфейс для чтения / записи данных, тогда вы можете реализовать интерфейсы друг для друга в классах Table и Excel.Чтобы получить данные из таблицы в Excel, вы должны сделать ExcelObject.import (dataFromTable).Имеет смысл ?(Есть целая куча примеров импорта для достижения целей simialr, верно?)

Shash

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...