代码之家  ›  专栏  ›  技术社区  ›  Slartibartfast

你如何处理特殊情况

  •  1
  • Slartibartfast  · 技术社区  · 17 年前

    这通常是一种情况,但这里有一个最新的例子:

    公司有各种联系方式(地址、电话号码、电子邮件……),当他们发布招聘广告时,他们会在复选框中选择联系方式。它基本上是描述性数据。用户在阅读广告时会看到类似“您可以亲自通过邮件申请…”的内容, 除了 如果是“通过门户网站”或“通过电子邮件”,则应显示相应的按钮。这些选项存储在数据库中,客户端(网站所有者,而不是制作广告的公司)可以更改这些选项(例如,他们可以添加“通过心灵感应”或其他方式),但如果他们篡改“电子邮件”和“web门户”选项,他们就会破坏网站。

    5 回复  |  直到 17 年前
        1
  •  1
  •   erickson    17 年前

    您已经将您的问题标记为“语言不可知论”,并且并非所有语言都完全支持多态性,但这是我处理此问题的方式。

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

        2
  •  1
  •   Din    17 年前

    首先,你真的需要它吗。原因很简单。您应该服务于特定的需求,而输入数据是提供该服务的一种手段。如果数据不适合现有服务,那么它的价值是什么?谁是该特定信息的消费者?

    有两种可能的答案:你正在扩大你的客户群,或者因为需求的变化,你需要改变现有的服务。在这两种情况下,您都需要从业务模型的开发开始。如果你描述了你需要什么样的服务以及它应该提供什么样的信息,你将避免很多特定的数据,并且有清晰的需求,易于在软件中实现。

        3
  •  1
  •   Chris    17 年前

    我向你推荐 resolution pattern 为此,在提到数据库的基础上。上面的链接对此进行了描述,但实际上比听起来简单得多。您编写了一个数据库查询,返回所有可能的选项(例如,您可能使用UNION或JOIN(取决于您的模式)一起读取标准选项和自定义选项)-然后,COALESCE SQL关键字可用于查找不为NULL的选项值的第一个“解析”。

        4
  •  0
  •   Marcin    17 年前

    好吧,如果你有两个特殊的选项,然后其他任何选项都以同样的方式处理,那么将你的选项存储为字符串,如果两个特殊选项中的任何一个出现在该列表中,那么显示该特殊项的相应内容。

        5
  •  0
  •   Community Mohan Dere    9 年前

    通过写一个非常简单的 Rules Engine . 您可以使用开箱即用的实现,也可以使用自己的实现。由于您的案例看起来很简单,我倾向于使用我自己的,因为这意味着更少的依赖性(YMMV)。

    推荐文章