我正在阅读http://www.infoq.com/interviews/trelford-functional并尝试了解OO的替代方法。
问:我看到你在GOTOCon就功能问题进行了一次演讲 建筑,那是什么?我认为所有的架构都是对象 为本?
嗯,他们不是;我想突出你选择的想法 语言和平台确实会以您的方式影响您的架构 认为;如何选择功能语言或架构真的可以 使系统受益。如果我只是举一个简单的例子说我们写一个零售应用程序,如果 你只考虑对象和变异,那么你会想到什么时候 当你添加一个项目时,你正在构建一篮子物品 增加数量,如果有人返回项目或取消 项目,你减少数量,你做错了。
对于零售系统,您需要跟踪实际执行的操作 可以检测欺诈,它是系统的关键要素之一;那么你 实际上每次添加新值,你永远不会变异。
所以我们只是与我们互动的最基本系统之一 每天,功能不变的风格实际上接近于 你想要的建筑。
如果你在购物篮应用中采用更实用的风格,你会如何思考这个问题?例如,你是否仍然有一个购物篮对象,而不是改变其内容,你会创建一个新的东西?
很多thx
答案 0 :(得分:2)
它将是一个容器数据结构,其不变量建模为篮子(例如bag -like数据类型)。容器将是持久的,因此您可以透明地回滚到旧版本(允许用户撤消操作,或保存以供以后访问)。
通过不破坏性地更新篮子,您可以免费获得回滚,撤消和持久性。
通过使用更丰富的数据类型,可以减少簿记,从而减少错误的可能性。