我正在阅读http://www.infoq.com/interviews/trelford-functional并尝试了解OO的替代方法。购物篮的功能性方法
Q我看你在GOTOCon上做功能 体系结构,这是什么?我认为所有架构都是面向对象 ?
唉,他们不是;我想强调一下这样的想法,即语言和平台的选择 确实会影响您的架构,而您的想法是 ;如何选择功能语言或体系结构真的可以使系统受益。
如果我举一个简单的例子说我们写零售应用程序,如果你认为只是对象和变异,那么你会认为当你构建一篮子物品时,当你添加一个物品时, d 增加数量,如果有人返回物品或取消 物品,你会减少数量,你会做错了。
对于零售系统,您需要跟踪实际完成的事情,以便您可以检测到欺诈行为,这是系统的关键元素之一;所以你这次实际上每增加一个新的值,你都不会改变。
因此,仅仅从我们每天与 互动的最基本的系统之一,功能不可变样式实际上接近您想要的 架构。
如果您将采用更实用的风格与购物篮应用程序,你会怎么想这个问题?例如,你是否还有购物篮对象,而不是改变它的内容,你会创建一个新的东西?
许多THX
好的。 Thx vm。你能解释一下,如果你添加一个物品到篮子里?例如,而不是说增加一个计数器,你会添加一个项目到一个集合或类似的东西?虽然我看不到这会给你一个回滚能力,除非你有时间戳,例如? – 2012-08-01 08:35:32
您将该项目添加到集合中。容器的先前版本将被记录在历史堆栈中。不需要时间戳 - 只需展开堆叠即可。 – 2012-08-01 11:53:17
容器是否负责维护自己的历史? S – 2012-08-01 12:19:31