2016-04-17 6 views
0

У меня есть класс Account со многими полями, и только поле status (активное или неактивное) может измениться в объекте. Итак, мы говорим о классе с 10 полями с полем status, который имел бы смысл иметь сеттеры.Использование неизменяемого или изменяемого объекта в этом контексте java?

Что бы вы сделали в этом сценарии, не могли бы вы сделать целой класс неизменным, кроме того конкретного поля, которое изменяет статус?

+0

Там нет такого понятия, как * частично * неизменны класса; класс * mutable *, если какое-либо из полей модифицируется. Я не вижу цели в добавлении мутаторов, которые вам не нужны, но каков ваш реальный вопрос? –

+0

В этом вопросе недостаточно подробностей, чтобы кто-нибудь мог дать полезный анализ ситуации. Но объект с хотя бы одним изменчивым полем не является неизменным объектом. – Wyzard

+0

@Elliot Frisch, что статус учетной записи может измениться там, где в качестве начальной даты, имени, фамилии и т. Д. Никогда не изменится. Поскольку у меня есть миллиарды счетов, создание нового объекта за каждый раз, когда статус меняется с активного на неактивный для каждой учетной записи, будет дорогостоящим – Rollerball

ответ

0

Account необязательно быть неизменным, но его составленные классы как поля, если они были бы неизменными. Плюс, да только status будет иметь метод сеттера.

Что-то, как показано ниже -

class Account { 
    private int a; 
    private String b; 
    private SomeClass s; //Make this immutable 
    private String status; 

    String setStatus(String status) { 
     this.status = status; 
    } 
} 
+1

Сделать неизменные поля 'final'? – totoro

+0

да это можно сделать. Infact почему просто неизменяемые поля. почему не каждое поле, кроме статуса. –

+0

Вот что я имел в виду, да. – totoro