Programming

事件驱动

event-driven programming paradigm: 事件驱动编程范式
https://en.wikipedia.org/wiki/Event-driven_programming
简单表现:事件名 + 事件回调(dom event,webpack plugin)

事件循环器(Event Loop)是一个程序结构,用于等待和发送消息和事件。事件驱动编程的代码核心就是事件循环器,在Linux下推荐使用epoll实现,在其它没有epoll 的系统上可以使用kqueue/ports/poll/select实现

在网络编程中基于事件驱动主要有两种设计模式:Reactor和Proactor

事件:生成事件的对象通过事件描述了一个动作及其结果,但是该对象不知道事件接下来会被如何处理。
命令:生成命令的对象知道针对某一事件的处理逻辑,所以该对象将要求目标对象对事件进行相应的处理。

观察者模式和发布订阅模型的区别就在于消息是否发送给中间件,观察者和被观察着是否完全解耦;而观察者模式和事件驱动的区别则在于事件驱动则更加灵活,但同时增加了程序的复杂性。
image.png

Pattern

模式的基本分类
Creational patterns
Structural patterns
Behavioral patterns
Concurrency patterns
https://en.wikipedia.org/wiki/Software_design_pattern#Classification_and_list
https://en.wikipedia.org/wiki/Software_design_pattern

Programming Paradigm & Design Pattern & Application Architec

Programming Paradigm:The programming paradigm and the languages that use them inform how the code gets written.
Design Pattern:A design pattern is a useful abstraction that can be implemented in any language. It is a “pattern” for doing things.
Application Architec:Takes into consideration how you build a system to do stuff.
https://stackoverflow.com/questions/4787799/difference-between-programming-paradigm-design-pattern-and-application-architec