У вас есть несколько вариантов:
Сделать это класс, есть клиент построить его, дать значение в параметре
Pro: Консервированные неизменность
Con: Имея только один экземпляр может быть трудно управлять
Добавить переменную для параметра в объект, добавить сеттер.
Pro: Вы еще одноплодная
Con: Существует изменяемое состояние в настоящее время
Реализовать multiton
Pro: Дает (видимую) неизменность и одноплодный (за пары)
Con: больше коды для реализации
Вы могли бы реализовать многотонные как это в Скале:
class Object1 private (val initValue: Int) {
// ...
}
object Object1 {
val insts = mutable.Map.empty[Int, Object1]
def apply(initV: Int) =
insts.getOrElseUpdate(initV, new Object1(initV))
}
UPDATE Вы также могли бы превратить это в «синглтон с параметром»:
object Object1 {
var inst: Option[(Int, Object1)] = None
def apply(initV: Int) = inst match {
case Some((`initV`, i)) => i
case Some(_) =>
sys.error("Object1 already instantiated with different param")
case None =>
val i = new Object1(initV)
inst = Some((initV, i))
i
}
}
Не следует, что вы _have_ используете объект, потому что вы только _need_ один экземпляр. Является ли это _requirement_, что существует только один экземпляр? –
@ DanielC.Sobral, есть. –
Как вы убедитесь, что создали его перед тем, как открыть его? – ziggystar