Rum*_*mca 2 haskell design-patterns
有人声称OOP设计模式与函数式语言无关.是否有代码演示如何在Haskell中实现每个模式?特别是,完整的演示还必须展示如何表示对象,OO多态性等.
我认为"不相关"的部分主张更多是由于纯面向对象概念与纯函数式编程的不兼容性.
在某些方面,它们都是旨在解决相同问题的概念 - 代码管理,程序员以及以某种方式保持"状态".
OOP通过尝试将每种状态隔离到一个单独的对象,然后让智能对象相互通信(通过方法,接口等)来解决这个问题.
纯函数式语言通过将问题分解为非常非常小的函数并使数据相当愚蠢来解决这个问题.函数不能访问,编辑或更改任何未特别作为参数给出的内容,以及它对这些内容的作用只能在它返回的内容中看到.
在OOP中,为了解决全局变量的问题,比如一个数据库连接,单例模式表示你将所有数据库连接信息存储在那个对象中,然后只允许它初始化一次,然后在初始化时,所有在代码库中,同一个对象"出现"并使用相同的变量.
在haskell /函数式编程中,程序的整个结构将有所不同.而是将数据库连接函数隔离,只发生在代码的一部分中.
您可以在OOP类型语言中应用相同的东西,但它更尴尬,语言设计不鼓励它.