Являются ли Java2D и Swing примерами хорошего использования ООП? - PullRequest
3 голосов
/ 26 февраля 2012

Чрезмерное наследование?

Java Swing и Java2D во многом зависят от наследования. Большинство людей сказали мне, что я должен как можно больше избегать наследования и использовать его только при необходимости. Так оправдано ли широкое использование Inheritance в Java2D и Java Swing?

Шаблон адаптера

Я слышал много похвал за шаблон адаптера и много критики. Из всего этого я понял, что шаблон адаптера считается хорошим дизайном, только если используется в нужном месте. Ненадлежащее использование шаблона адаптера приводит к тому, что люди, читающие ваш код, нахмурились. Правильно и актуально ли используется шаблон адаптера в двух API Java?

Одиночки

Оба API также имеют тенденцию использовать значительное количество синглетонов. Это хорошо?

Вопрос

Итак, являются ли Java2D Api и Java Swing хорошим примером объектно-ориентированного интерфейса программирования? Должен ли я использовать их методы в моем коде?

Ответы [ 3 ]

2 голосов
/ 26 февраля 2012

У меня нет уверенности в этом, но я могу предложить некоторую мысль:

  • наследование: предположим, что вы предпочли использовать интерфейсы и композицию вместо повторного использования по наследованию в Swing, тогда вам потребуется выполнить огромное количество переадресации (Component и JComponent имеют десятки методов)

  • рисунок адаптера: см. Выше

  • синглтоны: они подходят для моделирования частей системы, которые являются по-настоящему уникальными (я согласен, что java.awt.Desktop может быть реализован как одноэлементный - даже при использовании фабричного метода)

  • общий дизайн: вы можете судить о вещах по результатам - Swing - надежный, расширяемый и широко используемый.

1 голос
/ 26 февраля 2012

Мой друг, который работает с Swing, постоянно жалуется, что это абстрактная болота. Определение поведения объекта во время выполнения включает в себя сложение причудливого коллажа унаследованной функциональности. Из того, что я видел, я склонен согласиться.

0 голосов
/ 26 февраля 2012

Наследование - это полезная концепция программирования, но ее легко использовать не по назначению.

Наследование - хороший выбор, когда:

  1. Ваша иерархия наследования представляет собой "is-a "отношение, а не отношение" has-a ".
  2. Вы можете повторно использовать код из базовых классов.
  3. Вам необходимо применять один и тот же класс и методы к различным типам данных.
  4. Иерархия классов достаточно поверхностна, и другие разработчики вряд ли добавят еще много уровней.
  5. Вы хотите внести глобальные изменения в производные классы, изменив базовый класс.

статья о Microsoft здесь и еще одна хорошая здесь

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