SimpleCache Ant.Karlov'а на HaXe

Кэш объектов всегда достаточно полезная штука. В одной из своих поделок я использовал реализацию, подсмотренную у Ant.Karlov'а в его Tower Defense туториале.
Но в свете того, что я в последнее время перешел на haxe реализацию SimpleCache пришлось тоже перенести на этот язык.
Вот в принципе сам код класса:
package mmg;

class SimpleCache<T>
{
    public var instance(get, never):T;

    private var _targetClass:Class<T>;
    private var _currentIndex:Int;
    private var _instances:Array<T>;

    public function new(targetClass:Class<T>, initialCapacity:Int)
    {
        _targetClass = targetClass; // Базовый класс всех объектов
        _currentIndex = initialCapacity - 1; // Индекс текущего свободного объекта
        _instances = []; // Список всех объектов

        // Заполняем обойму
        for (i in 0...initialCapacity)
        {
            _instances[i] = getNewInstance();
        }
    }

    private function getNewInstance():T
    {
        return Type.createEmptyInstance(_targetClass);
    }

    private function get_instance():T
    {
        if (_currentIndex >= 0)
        {
            // Возвращаем свободный объект из кэша
            _currentIndex--;
            return _instances[_currentIndex + 1];
        }
        else
        {
            // Если обойма пуста, то экстренно создаем новый объект
            return getNewInstance();
        }
    }

    public function put(instance:T):Void
    {
        _currentIndex++;
        // Если обойма переполнена
        if (_currentIndex == _instances.length)
        {
            // То помещаем в конец массива, как новый элемент
            _instances[_instances.length] = instance;
        }
        else
        {
            // Помещаем в свободную ячеку массива
            _instances[_currentIndex] = instance;
        }
    }
}

Использование класса осталось почти без изменений:

// инициализируем кэш
var cache:SimpleCache<OurObjectClass> = new SimpleCache(OurObjectClass, 50); 
// берем один из экземпляров
var tmp:OurObjectClass = cache.instance; 
tmp.doSomething();
// возвращаем объект обратно в кэш
cache.put(tmp); 

Комментарии (7)

+1
Напишите пожалуйста статейку из рядя Hello world для хакса.
тоже было бы интересно почитать, в чем основные различия плюсы-минусы и тд =)
+2
На данный момент для меня основной плюс — кроссплатформенность. Там есть некоторые ньюансы, но все проблемы решаемы безболезненно.
Статью напишу обязательно.
0
Спасибо!
Специально сесть изучить времени не хватает,
но статейку обязательно почитаю, вдруг язык окажется удобным и стоящим изучения
0
Язык очень похож на as3
+1
Особенно если использовать haxenme.
Сравнение кода на haxe и as3, также на блоге есть еще исходники для ознакомления.
0
интересно, спасибо
0
Славно было бы все под кат убрать.
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.