我应该如何从对象创建一个干净的面向用户的slug?

时间:2011-09-12 20:18:49

标签: language-agnostic

鉴于我正在使用预先存在的注释/讨论解决方案,该解决方案使用唯一字符串作为线程ID,我需要从适合以下约束的线程ID的任意对象创建面向用户的slug :

  1. “漂亮”
  2. 人类可读
  3. 不透露内幕
  4. 每个对象实例唯一
  5. 我考虑使用{FQCN}-{id},但它违反#4,并且在网络编码时,#2。我也考虑过相同的md5哈希,但违反#3(可能是#1,取决于“短”的定义)。

    由于对象没有标准化的API(例如,不能保证它们都有getTitle()方法,例如),我不知道如何提出一个符合这些限制的slu ..您将如何创建一个,如果不可能,您将使用哪种格式违反尽可能少的约束?

1 个答案:

答案 0 :(得分:1)

听起来好像你正在使用任意对象,你会想让对象自己决定。你想要一个基类或者一个接口来定义对象是“可缓慢的”。你要用的所有东西都需要实现它。

这样,你就有了

getObjectFromSlug = function ()function getObjectFromSlug ()

getSlug = function ()function getSlug ()

接口中的

,每个“可缓慢”对象都需要自己实现。唯一的问题是你必须手动要求它们本身是唯一的。