Допустим, у меня есть класс Foo
, и конструктор принимает 2 параметра.
Основываясь на этих параметрах, метод initialize выполняет некоторые тяжелые вычисления и сохраняет их как переменные в экземпляре класса. Объект создан.
Теперь я хочу оптимизировать это и создать кеш этих объектов. При создании нового объекта Foo я хочу вернуть существующий объект из кэша, если параметры совпадают. Как я могу это сделать?
В настоящее время у меня есть self.new_using_cache(param1, param2)
, но я бы хотел, чтобы это интегрировалось в обычный Foo.new()
.
Возможно ли это каким-либо образом?
Я также могу сделать вывод, что использование .new()
в сочетании с кешем не совсем синтаксически правильно.
Это будет означать, что метод должен называться new_or_from_cache()
.
осветление
Это не только тяжелый расчет, он также предпочтителен из-за ограничения количества дублирующихся объектов. Я не хочу 5000 объектов в памяти, когда я могу иметь 50 уникальных объектов из кэша. Поэтому мне действительно нужно настроить метод .new, а не только кэшированные значения.