scjp вопрос относительно дизайна - PullRequest
2 голосов
/ 12 апреля 2011

Команда программистов рассматривает предложенный API для нового служебного класса.После некоторого обсуждения они понимают, что могут уменьшить количество методов в API, не теряя при этом никакой функциональности.Если они реализуют новый дизайн, какие два ОО-принципа они будут продвигать?

A. Looser coupling
B. Tighter coupling
C. Lower cohesion
D. Higher cohesion
E. Weaker encapsulation
F. Stronger encapsulation

Может кто-нибудь сказать мне, каков ответ?

Ответы [ 2 ]

3 голосов
/ 12 апреля 2011

Мой ответ будет

Слабее муфта и Высшее сцепление

Если следующий вопрос - почему? тогда я бы предложил вам пройтись по этой статье:

http://blog.sanaulla.info/2008/06/26/cohesion-and-coupling-two-oo-design-principles/

1 голос
/ 12 апреля 2011

Я бы сказал, во-первых, более сильная инкапсуляция. Предположим, что один из методов, которых больше нет в API (т. Е. Он стал закрытым или удаленным), предоставляет более функциональные возможности «низкого уровня», к которым все еще можно получить доступ через оставшиеся методы «более высокого уровня». Я думаю, это то, что вы должны предположить. В этом случае вы улучшили инкапсуляцию, потому что вы можете свободно изменять количество и тип аргументов для метода, имя метода и его возвращаемый тип, или даже полностью удалить метод и сложить его функциональность в вызывающую (-и) функцию (-и). , не затрагивая клиентов API.

Ой, извини, какие два ? Хорошо, это также будет способствовать более слабой связи, потому что между классом и его клиентами меньше точек связи, и, следовательно, меньше возможностей сломать вещи по-разному.

...