Хранение фабричных образцов продукции - PullRequest
0 голосов
/ 09 января 2010

Прямо сейчас у меня есть оператор switch, который используется для создания объектов на основе строки. Существует три типа объектов, которые расширяют абстрактный общий объект. Я действительно должен был использовать фабричный образец, который я выясняю прямо сейчас. Моя проблема заключается в следующем: я ценю гибкость фабричного шаблона, но сейчас я храню потенциальные продукты в специальных словарях, посвященных их типу.

_type1[location] = ArrayOfType1s
_type2[location] = ArrayOfType2s
_type3[location] = ArrayOfType3s

Это работает, если у меня есть только три типа, но если я решу добавить больше с гибкостью заводского шаблона, тогда возникает проблема, как их хранить, так как мне придется каждый раз создавать специальный словарь Я добавляю один ...

Единственный ответ, который я могу придумать, - это вложить свои словари, которые звучат довольно медленно.

_factoryOutput[type] = type[location] = ArrayOfTypes

Это, вероятно, работоспособное решение, но кто-нибудь может предложить более чистое решение? Я работаю в AS3, но не стесняйтесь предлагать более общее решение.

1 Ответ

0 голосов
/ 09 января 2010

Одним из возможных решений является использование в ваших продуктах метода getType (). Это может просто вернуть строку или int, уникальные для данного типа продукта. Вы можете динамически создавать уникальные массивы для типов продуктов по мере их появления (т. Е. Проверять, существует ли массив для типа, создавать при необходимости перед сохранением) или, альтернативно, вы можете просто хранить все типы продуктов в одном массиве и есть функции фильтра для их извлечения. Примером этого может быть:

function getProductsByType(type:String):Array {
    var matched:Array = [];
    for(//loop over all products) {
        //if type is what your looking for, push into matched array
    }

    return matched;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...