昨天app客户端出现一个问题,最后发现是使用封装的一个pub/sub模式的问题。与之事件的发布写在了构造函数中,但pub/sub中与之相关的发布者、订阅者对象却在此后才会实例化。这件事该赖谁呢?写这个pub/sub模式的,还是在构造函数里面写事件发布者的?

问题出现在了构造函数里面,构造函数一般用来做一些初始化的工作,像对成员变量的初值的初始化,实现依赖注入,对一些数据信息的预处理

这样来看到底是谁的责任,就跟代码所起的作用相关了

如果这段代码是应用和用户之间的交互相关的逻辑问题,那么很明显不该把这段事件发布相关代码写到构造函数中。像Yii2框架中继承于Object的类,每次类创建完成之后,就会自动执行Objectinit() 这个函数。加上这么一层,就实现了框架的和使用人员的初始化流程给分开,防止使用框架的人在依赖到框架的时候,还未初始化情况的出现。

要是两段都是核心处理相关的代码呢?看来也只能是开发的两位成员没有协调好这个顺序问题了