我发现了这篇文章https://www.sitepoint.com/three-design-patterns-that-use-inversion-of-control/,它介绍了三种实现控制反转的方法:1. 通过依赖注入实现控制反转; 2. 通过观察者模式实现控制反转; 3. 通过模板方法模式实现控制反转。另外还有以下三种行为模式可以让你从外部改变对象的行为:4. 事件发射; 5. 回调函数; 6. 中间件。