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

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/lanphaday/article/details/45017419

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

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

阅读更多
换一批

关于Netscape的一点想法

09-04

当别人纷纷指责微软时,我选择了沉默,因为我用的一直是微软的rn系统:从DOS,到Windows 98, Windows 2000, Windows XP.令我汗颜的rn是因为我比较懒,也比较笨,终于没有学会编程或Linux,更无缘于Sunrn系统或其它大型Unix的操作系统,因为我在学校时我学的是文科,非计rn算机专业,甚至连Windows都没有用,其它的同学也仅仅会用老版的WPSrn和几个五笔罢了,而我则汗颜地自学了foxbase,现在却都忘光了。rn对于我没有亲自用于其它产品,我无从比较,所以也就没有资格评价它的rn好坏。而对于为何我用微软产品的唯一的理由有二:1.就是因为好用;rn2.界面亲切。尽管我也同样觉得微软霸道,价格死高(不过我用的D版,rn呵),bug多多。rn 后来到工作中,接触了Windows产品:Win98,office 97. 这时,rn我非常感兴趣,我也就沉迷了一段时间,学会装系统,装软件,组建简单rn的局域网。一时,也是学了一点东西。其中,也曾想学linux,书也买了,rn光盘也买了,最终还是没有学成,因为:一、可能缺少环境,二、至今rnlinux仍未能在我的机器上成功安装。rn 所以平心而论,当别人贬低微软时,我只是保持中立。rn 上个月底,微软的死对头netscape发布了最新的流览器Netscape 7.0.rn大概还是3.0的时候,我曾用过几次,当时感觉比较复杂,我的计算机英语rn并不是很好(尽管我是英文专业毕业的)。通过4年的学习,我的计算机英rn语水平应该有了一个很大的长进。于是我想,还是用用Netscape吧,至少说rn算是对弱者的一个支持吧,至少说这种精神值得支持!于是我到NETSCAPE的rn主页上去下载,遗憾的是一直到今天我都未能上其主页上下载这个软件,好rn多链接是死链接。后来,我在PCWORLD上下载了下来,终于成功安装。rn 让我感到遗憾的是,当我打开天极网(www.yesky.com)首页时,发现上面的rn插件居然无法正常显示,在CSDN(www.csdn.net)打开网页时,速度不是很rn慢(我用的可是正宗10M宽带),而且网友的回复时全部滚动条,让人既看不清楚,又感到十分不愉活。你能想象一个页目上有十几个水平滚动条吗?而用IE时则是正常;后来收电子邮件时,发现速度也不是很快。我花了整整一个下午来研究它,rn可是最终只得失望地再次将netscape 7.0再次卸载!永别了,netscape!我真的rn不明白,netscape的软件测试人员究竟是怎么测试的?我从未敢为微软将好话,rn但是IE却真的没有这样的问题。其实,应该讲不是用户放弃了软件,而是软件rn抛弃了自己:因为它带来的不是方便,而是麻烦!很想在netscape的feeback中写rn封信给他们,可惜虽有这个功能,网页却始终打不开。我想,也许它真的快要rn走到尽头了吧!特别是像这样的网站上的新链接,居然在一周末竟未能打开过,rn真的有点怀疑他们的网管是否尽责。rn 只是,如果我不选择IE,我还能选择谁呢??rn 最后,我想说,评价一个软件的好坏的次序,应该是好用-功能-界面。因为rn人们用电脑是来方便工作与享受生活的,而不是来处理麻烦的!尽管我不会编程,rn还是衷心地希望我们的程序员们在编程时能考虑到这些,以方便最终用户!rnrnrn

没有更多推荐了,返回首页