суббота, 13 февраля 2010 г.

POJO aka Bean

Товарищ Фаулер (очень крутой дядька, который пишет очень дорогие книги по проектированию) придумал интересное слово, которое мы с вами сегодня выучим - POJO.
Это своего рода стереотип для классов (привет Мещерякову!) который говорит нам, что этот класс ничего не делает, и имеет только состояние.
Например,
class Foo {
Bar bar;
Bar getBar(){return bar;}
void setBar(Bar bar){this.bar = bar;}
}
это POJO, а
class Bar {
int calculateUniverse(return 42;)
}
- нет.
еще некоторые дяденьки называют поджи бинами (bean).

Итак, теперь все знают слово POJO - Plain Old Java Object («старый добрый простой Java-объект»)

8 комментариев:

  1. Мещерякову - мой препод по Технологиям компьютерного проектирования. Полезные штуки говорил)

    ОтветитьУдалить
  2. >> То-есть POJO значит - никаких вычислений?
    << Угу, только поля и setXXX()/getXXX() методы.
    >> Ок.

    ОтветитьУдалить
  3. Интересно... Только set и get?
    А как бы тогда выглядел бы класс, который, к примеру, поиск чего либо в файле?

    set_Файл

    get_Что-то_из_файла

    так???
    По идее, set и get должны получать/возвращать данные одного и того же типа, т.е., в данном случае ФАЙЛ.

    Поясните поподробнее про POJO)))

    ОтветитьУдалить
  4. Обычно бины еще наследуют от интерфейса Serializable, для читабельности, также хорошим тоном считается реализация методов toString(), equals() и hashCode()

    ОтветитьУдалить
  5. Bean в вашей статье это JavaBean? Так POJO является JavaBean или нет? Если да, то зачем надо было придумывать еще одно страшное название?

    ОтветитьУдалить
  6. POJO is an acronym for Plain Old Java Object. The name is used to emphasize that a given object is an ordinary Java Object, not a special object, and in particular not an Enterprise JavaBean.

    ОтветитьУдалить
  7. JavaBean это POJO, который также имплементит Serializable и должен иметь конструктор без аргументов (для десериализации), а также предоставляет доступ к свойствам объекта через геттеры и сеттеры.
    http://en.wikipedia.org/wiki/Plain_Old_Java_Object

    ОтветитьУдалить
  8. А чем это отличается от Value Object (VO)?

    ОтветитьУдалить