关于标签系统的一点想法。

原创 2015年04月13日 14:06:08

我跟几个人谈到过我这个标签系统。

标签系统,tagging,在 web 2.0 时代大行其道,特别是 del.icio.us 大量应用而广受关注。但如今,随着 del.icio.us 的消逝鲜有人关注了。

但,标签系统是一个极具扩展力的系统,作为一种“元数据”信息,可应用的场景其实非常多样化。因为开展了开发外包业务,接触了几个需求以后,愈加觉得如此。比如有如下需求:

有一个订餐系统,类似“饿了么”,店家增加菜品麻婆豆腐,希望它加入“周二半价”活动,后来活动又多了一个“满10减1”。考虑到活动可能常常增加、变动,那么如何设计方案?

也许你不信,其实 tagging 可以很好地解决这一类问题,额,确切来说是加上装修器模式。

当界面显示某一菜品时,显示的信息其实与从数据库中取得的初始数据不同,比如对于每一道菜:

tag_decorators = [...] #init tag decorators

def tuesday_promote(menu_item):
  if menu_item.has_tag('周二半价') and today_is_tuesday():
    menu_item.price *= 0.5

tag_decorators.append(tuesday_promote)

menu = get_menu_from_db(...)
for item in menu:
  for deco in tag_decorators:
    deco(item)

render_html(menu)

如上可见,当“麻婆豆腐”遇上星期二时,它的价格就会打五折。相对于给每一个菜品表增加一个“周二半价”的字段,使用 tagging 让整个系统更加简洁。

在实现时,每一个 tag 和它所对应的 decorator 完全可以存储在数据库中,在后台新增加一个 tag 时,可以绑定相对应的 decorator,甚至 decorator 的某些参数,就可以实现不需要编程即可变更业务逻辑的目的。

在真正的业务代码中,肯定不会出现 menu_item.price *= 0.5 这种代码,每一个 decorator 的作用都要记录下来,应该会把 menu_item 作一个包装。

另外,把 decorator 放在数据读取层中会更加好,这样业务层的代码可以把标签系统当透明,程序员写起代码来完全没有心智负担。

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

关于stat函数和根据st_mode 的值获取目标文件的文件类型和用户权限,及对相关系统宏的一点想法

关于stat函数和根据st_mode 的值获取目标文件的文件类型和用户权限,以及对相关系统宏的一点想法            谈论之前写说一下 stat 这个函数,这是个很有用的系统函数,大家都 知...

系统架构:Web应用架构的新趋势---前端和后端分离的一点想法

最近研究servlet,看书时候书里讲到了c/s架构到b/s架构的演变,讲servlet的书都很老了,现在的b/s架构已经不是几年前的b/s架构,其实b/s架构就是web应用开发,对于这样的架构我们现...

系统架构:Web应用架构的新趋势---前端和后端分离的一点想法

最近研究servlet,看书时候书里讲到了c/s架构到b/s架构的演变,讲servlet的书都很老了,现在的b/s架构已经不是几年前的b/s架构,其实b/s架构就是web应用开发,对于这样的架构我们现...
  • fzzsh
  • fzzsh
  • 2014年02月24日 09:39
  • 1198

我对后端优化的一点想法 (2012)

  • 2013年07月02日 10:28
  • 912KB
  • 下载

《象与骑象人》摘要及一点想法

总是轻易认同一种观点,此乃成个人思想之阻碍,以此自省。理解,转化,自我提升。------我的读书箴言 ================================================...

关于程序员面试的一点想法

作  者:david++ 发布时间:2012/10/12 18:58 从去年到现在,算算也面试过不少人了。对于如何通过面试找到合适的人才这个问题,也想了很多。面试往往都是,聊一聊技术和工作经验...

关于遥感图像的控制点片匹配算法的一点想法(一)

    在遥感图像的几何纠正过程中,可能会用到控制点库的点片自动匹配。关于控制点片匹配的算法有很多种,从最基本的分类可以分为基于像元的点片匹配和基于特征的点片匹配,由于基于特征的算法难度较大,一般使用...

Nginx反向代理和负载均衡的一点想法以及常见错误

反向代理负载均衡 使用代理服务器可以将请求转发给内部的Web服务器,使用这种加速模式显然可以提升静态网页的访问速度。因此也可以考虑使用这种技术,让代理服务器将请求均匀转发给多...

关于可配置工作流的一点想法

最近有些重构的工作,过程中在考虑能不能除了页面部分的代码消除重构以外,将流程什么的也提炼出来一点。 以前做c语言练习的时候,曾经有过这样的想法。 那是一个通信程序,简单的客户端和服务器端,发送和接...
  • comcow
  • comcow
  • 2012年02月19日 21:51
  • 917
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:关于标签系统的一点想法。
举报原因:
原因补充:

(最多只允许输入30个字)