Неизменные предметы и неизменяемые коллекции

С неизменным объектом, где уместно обернуть содержащуюся коллекцию как неизменяемую? Я вижу 3 варианта:

In the immutable object's factory:

public class ImmutableFactory {

    public Immutable build(){
       List<Integer> values = new ArrayList<Integer>();

        values.add(1);
        values.add(2);
        values.add(3);

        return new Immutable(Collections.unmodifiableList(values), "hello");
    }
}

In the immutable's contructor

public class Immutable {

    private final List<Integer> values;
    private final String hello;

    public Immutable(List<Integer> values, String hello) {
        this.values = Collections.unmodifiableList(values);
       this.hello = hello;
    }

    public List<Integer> getValues() {
        return values;
    }

    public String getHello() {
        return hello;
    }
}

In the immutable's accessor (if applicable).

public class Immutable {

    private final List<Integer> values;
    private final String hello;

    public Immutable(List<Integer> values, String hello) {
        this.values = values;
        this.hello = hello;
    }

    public List<Integer> getValues() {
        return Collections.unmodifiableList(values);
    }

    public String getHello() {
        return hello;
    }
}

Есть ли другие варианты, и какой из них подходит?

Ответы на вопрос(2)

Ваш ответ на вопрос