首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >存储工厂模式产品

存储工厂模式产品
EN

Stack Overflow用户
提问于 2010-01-09 07:26:07
回答 1查看 236关注 0票数 0

现在,我有一个switch语句,它用于创建基于字符串的对象。有三种类型的对象来扩展抽象的通用对象。我真的应该使用工厂模式,我现在正在弄清楚。我的问题是:我欣赏工厂模式的灵活性,但现在我将潜在产品存储在专门用于其类型的特殊字典中。

代码语言:javascript
运行
复制
_type1[location] = ArrayOfType1s
_type2[location] = ArrayOfType2s
_type3[location] = ArrayOfType3s

如果我只有三个类型,这是可行的,但是如果我决定用工厂模式的灵活性添加更多类型,那么就会出现如何存储它们的问题,因为每次添加一个类型时,我都必须制作一个特殊的字典……

我能想到的唯一答案就是嵌套我的字典,这听起来相当慢。

代码语言:javascript
运行
复制
_factoryOutput[type] = type[location] = ArrayOfTypes

这可能是一个可行的解决方案,但有人能建议一个更干净的解决方案吗?我使用的是AS3,但是可以提供一个更通用的解决方案。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-01-09 07:32:12

一种可能的解决方案是让您的产品实现getType()方法。这可能只返回一个字符串,或者返回该产品类型唯一的int。你可以动态地为出现的产品类型创建唯一的数组(例如:检查类型的数组是否存在,如果需要的话,在存储之前创建),或者,你可以只将所有的产品类型存储在一个数组中,并有过滤函数来检索它们。这方面的一个例子是:

代码语言:javascript
运行
复制
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;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2031498

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档