Rails 何为 DCI and Rails ?

tumayun · 2012年05月24日 · 最后由 tumayun 回复于 2012年05月25日 · 4369 次阅读

如题,希望了解 DCI and Rails 的同学介绍下。 我的理解就是在 model 层再抽象出一层,专门放一类代码,比如抽象出业务代码等

呼叫:@hysios @huacnlee @ywencn @lgn21st @Rei @hisea

没人了解么?

发现我理解错了,DCI应该是根据上下文动态的注入方法 比如权限管理中,user的权限可能是 N 种中的一种或者几种 然后把各个权限的方法抽象到另外一个moduleuser根据所属权限,给user对象注入该权限的方法,如: user.extend(Admin) if user.is_admin?

但是我想不到除了权限管理功能,DCI 还是用何种场景?

求各位大神现身说教。

@tumayun 什么场景你要用到 DCI 呢?

@tumayun 权限用 DCI 是大才小用了,可以简化一些复杂的组合计算吧,像销售系统的优惠活动场景

  1. 组合不同条件的优惠
  2. 选择不同类型的优惠等等吧 比较难讲清楚吧

@tumayun 请不要这样在你的每个帖子 (另一个) 里面追着 @ 一堆人,你的帖子不会被忽视的,大家都会看到,但你这样做法,会让人觉得有些讨厌... 早上其实我就很想说的了,可你有跑到另外个帖子去追。这样不好!

找到一段详细描述 DCI 的应用场景了 DCI aims at producing code where the interaction between objects at run time is visible in the code at compile time and in more general terms tries to make it easier to reason about the run time behavior from reading the code. http://stackoverflow.com/questions/9677916/what-is-dci-and-how-can-it-fit-with-rails DCI 是一种 paradigm,应用到 Rails 中可以解决 fat model 等 MVC 不足的地方,但这种在 run time 过程中动态扩展对象方法的操作在 Rails 中 production 环境下会有安全隐患,因为 Rails 中 production 环境下所有的类都会 cache 住的,具体使用还要看你的应用场景。 应用 DCI 的注意点和需要规避的问题可以参考: http://andrzejonsoftware.blogspot.jp/2011/02/dci-and-rails.html 还有一个代码实例,是 DCI 在纯 ruby 中实现迪杰斯特拉算法 http://fulloo.info/Examples/RubyExamples/Dijkstra/DijkstraListing.html 还记得以前用 matlab 实现过这个算法的,XD, 完全是函数式的编程,跟这差别太大了。

@huacnlee sorry 这样让你讨厌了,可能是我求知心切了,sorry @Richie @hysios 感谢闵兄 感谢大婶

需要 登录 后方可回复, 如果你还没有账号请 注册新账号