Установщики / получатели пружин и изменяемые переменные - PullRequest
2 голосов
/ 07 ноября 2010

Давайте предложим, чтобы у меня был следующий класс

    Public MyClass{

    Date date;

    //Mutable getters and setters

    public Date getdate(){
    retrurn date;
    }

    public Date setdate(Date date)
    {date = date;}

    //Now immutable setter and Getters 

    public Date getImmutableDate{
    return new Date(date.getDate());
    }

    public void setImmutableDate(Date mydate)
    {
    date = new Date(mydate.getDate());
    }
 }

Это хорошая практика - использовать изменяемые методы получения и установки для Spring или Hibernate Framework и использовать неизменяемые методы установки и получения для моего пользовательского кодирования.Чего я боюсь, так это:

MyClass myclass = new MyClass();
//assuming that item date was initalized some how.
Date currentDate = myClass.getdate();
currentDate.setMonth( currentDate.getMonth() + 1 );

Теперь, что случилось, я просто изменил значение переменной даты внутри объекта myClass, и это может быть первичным корнем для ошибок в системе.

Я прав?Могу ли я использовать неизменяемые геттеры и сеттеры для Spring / Hibernate?

1 Ответ

2 голосов
/ 07 ноября 2010

Обратите внимание, что если вы предоставите изменяемый установщик и получатель, он в конечном итоге будет использоваться людьми.Так что это не очень хороший вариант.

Вопрос не связан, в частности, с весной и спящим режимом, а скорее с дизайном API.Джош Блох советует - «минимизируй изменчивость».Но это означает, что вы должны использовать неизменяемые объекты, а не создавать экземпляры при каждом получении объекта.

Решение выше - использовать joda-time 's DateTime объект, который является неизменным.

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