|
|
1
1
您已经将您的问题标记为“语言不可知论”,并且并非所有语言都完全支持多态性,但这是我处理此问题的方式。 每个选项都有一些类型,不同的类型需要设置不同的属性。但是,每种类型都支持某种“渲染”方法,可以根据需要显示contact方法。由于属性(电话号码或web地址等)是特定于类型的,因此您可以在创建这些“对象”时验证管理员的输入,以确保提供了必要的数据并且有效。由于实现了呈现方法,而不是吐出用户提供的HTML,因此可以确保呈现的页面是正确的。它不太灵活,但更安全,更友好。
|
|
|
2
1
首先,你真的需要它吗。原因很简单。您应该服务于特定的需求,而输入数据是提供该服务的一种手段。如果数据不适合现有服务,那么它的价值是什么?谁是该特定信息的消费者? 有两种可能的答案:你正在扩大你的客户群,或者因为需求的变化,你需要改变现有的服务。在这两种情况下,您都需要从业务模型的开发开始。如果你描述了你需要什么样的服务以及它应该提供什么样的信息,你将避免很多特定的数据,并且有清晰的需求,易于在软件中实现。 |
|
|
3
1
我向你推荐 resolution pattern 为此,在提到数据库的基础上。上面的链接对此进行了描述,但实际上比听起来简单得多。您编写了一个数据库查询,返回所有可能的选项(例如,您可能使用UNION或JOIN(取决于您的模式)一起读取标准选项和自定义选项)-然后,COALESCE SQL关键字可用于查找不为NULL的选项值的第一个“解析”。 |
|
|
4
0
好吧,如果你有两个特殊的选项,然后其他任何选项都以同样的方式处理,那么将你的选项存储为字符串,如果两个特殊选项中的任何一个出现在该列表中,那么显示该特殊项的相应内容。
|
|
|
5
0
通过写一个非常简单的 Rules Engine . 您可以使用开箱即用的实现,也可以使用自己的实现。由于您的案例看起来很简单,我倾向于使用我自己的,因为这意味着更少的依赖性(YMMV)。 |