购物篮的功能性方法

时间:2012-07-31 09:25:59

标签: functional-programming

我正在阅读http://www.infoq.com/interviews/trelford-functional并尝试了解OO的替代方法。

  

问:我看到你在GOTOCon就功能问题进行了一次演讲   建筑,那是什么?我认为所有的架构都是对象   为本?

     嗯,他们不是;我想突出你选择的想法   语言和平台确实会以您的方式影响您的架构   认为;如何选择功能语言或架构真的可以   使系统受益。

     

如果我只是举一个简单的例子说我们写一个零售应用程序,如果   你只考虑对象和变异,那么你会想到什么时候   当你添加一个项目时,你正在构建一篮子物品   增加数量,如果有人返回项目或取消   项目,你减少数量,你做错了。

     

对于零售系统,您需要跟踪实际执行的操作   可以检测欺诈,它是系统的关键要素之一;那么你   实际上每次添加新值,你永远不会变异。

     

所以我们只是与我们互动的最基本系统之一   每天,功能不变的风格实际上接近于   你想要的建筑。

如果你在购物篮应用中采用更实用的风格,你会如何思考这个问题?例如,你是否仍然有一个购物篮对象,而不是改变其内容,你会创建一个新的东西?

很多thx

1 个答案:

答案 0 :(得分:2)

它将是一个容器数据结构,其不变量建模为篮子(例如bag -like数据类型)。容器将是持久的,因此您可以透明地回滚到旧版本(允许用户撤消操作,或保存以供以后访问)。

通过不破坏性地更新篮子,您可以免费获得回滚,撤消和持久性。

通过使用更丰富的数据类型,可以减少簿记,从而减少错误的可能性。