关于《模式 - 有效事件: 可取代数十种设计模式》

Posted on Wed 20 September 2017 in 遗迹

原文地址: https://msdn.microsoft.com/zh-cn/magazine/mt795187.aspx?f=255&MSPPError=-2147217396

标题起的很吓人,但我认为也许只是一种从编程语言到配置文件的回归。

解决方案总是蕴含在问题之中。自相矛盾的是,OOP 旨在解决的一些问题(全局函数和数据)反而成为 OOP 无意间引发的问题的解决方案。如果你看看有效事件这种设计模式,首先会发现的是,在某种程度上,它是回归基本的,同时使用全局函数取代方法和类。然而,由于无需在有效事件的使用者和实现之间知道并共享签名或类型,因此与使用 OOP 相比,环境更像是黑盒。这样一来,可以轻松地进行交换,例如,将 SaveToDatabase 与 InvokeWebService 或 SaveToFile 进行交换。没有接口、类型、POD 结构和类,只有一个共用签名。只有优质的普通旧数据。数据只会传入传出!

似乎是配置文件和数据序列化反序列化框架。

我意识到,经验丰富的构架师一定会认为这种多形性构造幼稚可笑且简单粗糙。然而,这种简单性正是它奏效的原因所在。借助有效事件,可以从数据库、配置文件或通过用户在窗体文本框中提供名称来提取方法或函数的名称。可以将此看作是不需要显式类的多形性变体。这是不含类型的多形性。这是在运行时期间动态确定的多形性。通过剔除所有关于多形性的传统观念,并重构多形性的实质内容,最终会生成实际有效的多形性(封装和多形性),而不含类、类型、接口或设计模式。链接有效事件就像原子结合成分子一样简单。这就是敏捷软件!

我天天用动态语言,所以说对于多形性……


有没有觉得这个思路有些熟悉?其实我觉得和 FAAS 之类套路很是相似啊。

如果我的判断没错,作者貌似是做了一个类似微服务的抽象,实现了调用、服务自动注册、数据序列化、回调等等一系列功能。

不过作者给出的那个项目例子貌似还是挺厉害的,有时间可以看一下。