Класс - это структура данных, связанная вместе с алгоритмами, работающими над ней.
Таким образом, если вы решаете, где разместить метод, практическое правило таково: выберите класс, на чьи структуры данных он работает больше всего. Если вы сделаете это хорошо, он не должен даже напрямую обращаться к членам данных других классов, только к их методам.
Также из названия метода видно, что вы правы, что viewProduct
должен принадлежать customer
: если бы он принадлежал product
, то имя viewProduct
было бы избыточным. Тогда имя view
было бы лучше.
В вашем примере ничего не говорится, как customer
s относятся к определенным c product
s. Например, если вы разрабатываете интернет-магазин, то customer
s, скорее всего, выберет продукт из списка, созданного для них вашими контроллерами.
В вашей спецификации отсутствует механизм, как customer
s относятся к товары. Подумайте об этом, и вы узнаете ответ.