mok*_*mok 11 oop paradigms event-driven
这些天,我几乎到处都听说"事件驱动"编程.
维基百科说:
在计算机编程中,事件驱动编程是一种编程范例,其中程序的流程由诸如用户动作(鼠标点击,按键),传感器输出或来自其他程序/线程的消息之类的事件确定.事件驱动编程是图形用户界面和其他应用程序(例如Javascript Web应用程序)中使用的主要范例,其以响应于用户输入执行某些动作为中心.
这不是我们的老朋友OOP吗?如果这不是OOP有什么区别?
Lig*_*man 13
面向对象编程(OOP)和事件驱动编程(EDP)是正交的,这意味着它们可以一起使用.
在使用EDP的OOP中,所有OOP原则(封装,继承和多态)都保持不变.
在具有EDP对象的OOP中,获取了一些发布事件通知和订阅来自其他对象的事件通知的机制.
具有/不具有EDP的OOP之间的差异是对象之间的控制流.
在没有EDP控制的OOP中,在方法调用上从一个对象移动到另一个对象.Object主要调用其他对象的方法.
在具有EDP控制的OOP中,在事件通知时从一个对象移动到另一个对象.对象订阅来自其他对象的通知,然后等待来自其订阅的对象的通知,根据通知执行某些操作并发布它自己的通知.
结论:OOP + EDP"完全是我们的老朋友OOP",由于事件驱动设计,控制流程被反转.
面向对象编程是通过将数据和动作配对到现实世界对象的模型中来定义的.事件驱动编程是一种编程风格,其中我们有一个服务器,无论是在通信端口还是用户界面上,等待输入命令.然后它将处理该命令并显示/产生所需的结果.
大多数事件驱动语言都是面向对象的 对象等待事件.面向对象语言中的程序不一定是事件驱动的,并且事件驱动编程不一定需要面向对象的语言.他们是无关的.
小智 5
顺序(非事件驱动)程序的算法就像一个配方:从头开始,一直进行到结束为止,然后停止。
事件驱动程序更像汽车的控件:任何时间都可以以任何顺序发生。
面向对象的原理似乎更适用于事件驱动的模型,因为每个“控件”基本上都与其他控件无关(关注点分离),事件的顺序并不重要,时间巧合也很重要:您可以打开雨刮器,关闭除霜器,同时转向并加速,所有动作不会相互影响。在某些情况下,使用食谱也可以做到这一点,但要由厨师(编译器/优化器/ CPU)来推断。
顺序程序可以是OO:没有人介意搅拌器和烤箱是否断开连接并自己做。我希望这是一个有用的类比。