你如何处理特殊情况下

问题描述:

这往往是情况,但这里是最新的一个例子:你如何处理特殊情况下

公司有不同的联系人数据(地址,电话号码,电子邮件......),当他们做招聘广告,他们有复选框,他们在哪里选择他们想要如何联系。它基本上是描述性数据。用户在阅读广告时看到类似“您可以通过邮件申请...”,,除了,如果它是“通过门户网站”或“通过电子邮件”,则会出现相应的按钮。这些选项存储在数据库中,客户(网站所有者,不是制作广告的公司)可以更改它们(例如,他们可以通过“心灵感应”或其他方式添加),但如果他们篡改“电子邮件”和“网页门户“选项,他们拧他们的网站。

那么我该如何处理数据,其中一切行为都是相同的方式,除了以这种方式行事的“这件事”之外,其他方式行为的“事物”以及数据本身是活的都应该由客户端编辑。

您已将您的问题标记为“与语言无关”,并非所有语言都干净地支持多态,但这是我处理此问题的方式。

每个选项都有一些类型,不同的类型需要设置不同的属性。但是,每种类型都支持某种可以根据需要显示联系方式的“呈现”方法。由于属性(电话号码或Web地址等)是特定于类型的,因此可以在创建这些“对象”时验证管理员的输入,以确保提供了必要的数据并使其有效。既然你实现了渲染方法,而不是吐出用户提供的HTML,你可以确保呈现的页面是正确的。它不够灵活,但更安全,更方便用户使用。

在数据库中,您可以拥有一个用于保存所有类型联系人数据的稀疏填充表,或者具有常见属性的“父”表和具有特定于类型属性的子表。这取决于你有多少类型以及它们有多不同。无论哪种情况,都会有某种类型的指示符,以便知道数据应该绑定到的对象的类型。

首先,三思,你真的需要它。原因很简单。你应该服务于特定的需求和输入数据是提供该服务的一种手段。如果数据与现有服务不符,那么它的价值和消费者是什么?

有两种可能的答案:您正在扩大您的客户群,或者您需要更改现有服务,因为需求发生变化。在这两种情况下,您都需要从商业模式的发展中脱颖而出。如果你描述你需要什么样的服务以及它应该提供什么信息,你将会避免很多特定的数据,并且有明确的要求可以很容易地在软件中实现。

那么,如果一切是是,你必须是特殊的,并且两个选项,然后什么都以同样的方式被处理,然后储存您的选项字符串,如果任一两个特殊的人的出现在该列表,然后显示该特殊项目的适当内容。

只需检查两个特殊项目的物品清单。没有什么花哨。

通过编写一个非常简单的Rules Engine。你可以使用一个开箱即用的实现,或者你可以推出你自己的。由于你的情况似乎很简单,我倾向于自己推出,因为它意味着更少的依赖性(YMMV)。

为此,我建议为resolution pattern,基于提到的数据库。上面的链接描述了它,但实际上它比听起来简单得多。您编写一个数据库查询,返回所有可能的选项(例如,您可以根据模式使用UNION或JOIN一起读取标准选项和自定义选项) - 然后,COALESCE SQL关键字可用于查找第一个“分辨率“不是NULL的选项值。