Пуристское OO путь состоит в том, чтобы избежать обоих и следовать , Закон Demeter при помощи эти Говорит, не Спрашивают подход.
Вместо того, чтобы получить значение свойства объекта, которое сильно связывает два класса, используют объект в качестве параметра, например,
doSomethingWithProperty() {
doSomethingWith( this.property ) ;
}
, Где свойство было собственным типом, например, интервалом, используйте метод доступа, назовите его для проблемной области не доменом программирования.
doSomethingWithProperty( this.daysPerWeek() ) ;
Они позволят Вам поддерживать инкапсуляцию и любые постусловия или зависимые инварианты. Можно также использовать метод установщика поддержать любые предварительные условия или зависимые инварианты, однако не попадите в прерывание именования их методы set, вернитесь к голливудскому Принципу для именования при использовании идиомы.
Хороший вопрос. Это сводится к различию в терминологии между Spring 2.0 MVC, в котором используется иерархия классов контроллера, и Spring 2.5 MVC, в котором используются аннотации.
«Объект поддержки формы» - это объект в стиле Spring 2.0 AbstractFormController
(и подклассы вроде SimpleFormController
) будут использовать для привязки данных формы к.
@ModelAttribute
делает то же самое для аннотированных контроллеров в стиле Spring 2.5, но в менее жесткий способ.
Итак, вы правы в том, что эти двое делают почти одно и то же, но стиль на самом деле совершенно другой. Оба являются допустимыми подходами, и оба поддерживаются в Spring 2.5 (и 3.0).