依赖注入与事件
最开始我接手的公司代码是用了事件来进行窗口间值的传递,并且将所有的方法写到了主窗口里,于是我就像优化下将不同功能的代码进行分类,比如与PLC连接相关的方法放到PLC类里面。但是出现了一个问题,就是当我想在plc类中进行更新UI的时候,没办法像所有方法都在一起那样随意调用,于是就有了两种实现的模式,事件触发,依赖注入,虽然都只是简单的实现但是够用了。
事件:
在PLC类中声明一个事件,然后所有想要更新UI的操作就调用事件委托,在主窗口中实例化PLC类的时候顺便订阅这个类中的更新UI事件,把要传递的参数传给主窗口中的处理函数。
//PLC类里声明事件
class plc类
delegate 委托
event 事件
。。。
触发事件?.invoke("参数");
//主窗体里订阅事件
class MainForm
plc.事件 += 处理方法
订阅后要注意重复订阅问题,老代码中有新建窗口时订阅事件,但没有取消,导致每次点击按钮都会进行订阅将动作重复很多次
依赖注入
plc类中添加构建函数,将主窗体类传递进来,从而调用主窗体更新方法。这好像只是简单实现,正常的依赖注入需要用到接口。
class plc类
readonly 主窗体 _f1
public plc(主窗体 f1){ _f1 = f1;}
普通依赖注入方法
interface 接口
相关的方法;
class 实现1:接口
实现方法
class 实现2:接口
实现方法
class 其他类
声明 接口 _inter1;
构建函数(接口 inter1){_inter1 = inter1}
//使用
接口 inter = new 实现1;
var = new 其他类(inter);
正常的依赖注入的方法完全解耦了函数,能够方便后面的修改与功能添加,即使更换具体的实现方法,相关的逻辑也不需要有太大的变动。

浙公网安备 33010602011771号