提问人:Peter 提问时间:10/29/2010 更新时间:10/29/2010 访问量:93
需要帮助规划分类的体系结构 Connundrum [已关闭]
Need Help Planning Architecture for Categorization Connundrum [closed]
问:
我更多的是一个“你会做什么”的问题,而不是一个实际的编码问题。 它与我目前正在从事的一个项目有关。在这个项目中, 我们的任务是将多个市场 API 组合到一个界面中。每 API有自己独特的产品分类方式。顶层 我们正在查看的所有 API 的父类别或多或少都是 与某些变化相同。但是,子类别非常 不同。
例如,一个 API 需要很长的面包屑跟踪 以选择类别,例如: 体育 > 球类 新英格兰>>运动 足球>现役球队>爱国者队>纪念品。而另一个 API 有两级 分类: 体育 > 爱国者队纪念品.在许多情况下,有子类别 与其他 API 的子类别没有任何关系。
所以,问题是 - 设计时采取的最佳方法是什么 界面?我们目前在两种可能性之间挣扎:
1)在客户端上设计自定义类别UI,然后将逻辑构建到中 能够对各种 API 的需求进行排序的服务器 基于用户选择的选项。
2) 以这样一种方式创建 UI,即用户必须遍历 每个单独 API 的必要步骤。根据用户设置,这意味着 他可能需要填写 API - 特定信息 5、6、10 或更多 次。
虽然我被告知第一个选项是一场真正的编程噩梦( 我得到的示例是更改 API 数据字段)我强烈认为第二个选项会惹恼客户。
有什么想法吗??
答:
您必须向客户提供一致的不更改界面。
我想看看你心目中的两种不同方法的一个例子。
API.find( PRODUCT, CATEGORIES_LIST )
第一名并不是一场噩梦。用户体验是第一要务;永远不要忘记这一点。如果用户更容易导航较短的路线,那么就给他们这个机会。此外,我会用一些抽象来包装 API,这样我的代码就根本不知道 API,只知道抽象层。这样,我就可以更改 API,而不必保留大部分代码,只更改抽象层。
使用会话将数据从页面传递到页面,并使用工厂根据会话数据创建页面的输入状态;这将加强页面、状态和用户数据之间的上下文。
将第一级对象(页面直接与之对话的对象)保留在页面的上下文中;这将有助于诊断问题。
最重要的是,为抽象层创建一系列测试,测试每个对象、函数和输入输出对,以确保应用程序坚如磐石。
评论
这是一个非常困难的问题。如果你搜索“本体产品分类”,你会发现许多关于这个主题的研究论文和讨论。如果一个只是另一个的更详细版本,那将是非常可行的,但您的描述暗示情况并非如此,因此您需要构建自己的分类方案并将其他分类方案映射到它上面。
您是否有一个通用密钥(UPC 代码或其他)可以验证不同产品类别之间的映射关系?如果是这样,您也许可以构建自己的分类方案,然后将其他分类方案映射到该方案上,并取得一定程度的成功。
显然,第一种选择对消费者来说是最好的,但构建这样的映射可能非常困难且非常耗时,并且需要不断更新。
一种方法是构建比提供的任何层次结构都更简单的层次结构。更简单的层次结构将使将类别映射到层次结构的 [主要是手动] 工作变得更加容易,因为大多数只是包含。这可能会使用户体验变得更糟,但如果你在产品浏览体验周围添加强大的搜索功能和出色的“相关产品”/“购买此产品的人也购买了此产品”工具,你可能会弥补层次结构的不足。
评论