2

次のクラスがあることを提案しましょう

    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 にも不変のゲッターとセッターを使用できますか?

4

1 に答える 1

2

変更可能なセッターとゲッターを提供すると、最終的には人々によって使用されることに注意してください。だから、それは良い選択肢ではありません。

質問は特に春と休止状態に関連していませんが、API 設計に関連しています。Josh Bloch は、「可変性を最小限に抑える」ことをアドバイスしています。ただし、これは不変オブジェクトを使用する必要があり、オブジェクトが取得されるたびにインスタンスを作成しないことを意味します。

上記の解決策は、不変のjoda-timeDateTimeオブジェクトを使用することです。

于 2010-11-07T09:46:44.243 に答える