插件系统接口设计原理(插件接口如何设计)

网友投稿 542 2023-01-05


本篇文章给大家谈谈插件系统接口设计原理,以及插件接口如何设计对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。 今天给各位分享插件系统接口设计原理的知识,其中也会对插件接口如何设计进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

插件机制实现的原理是什么?

主程序如果希望自身的功能可以被扩展,其需要:提供一组服务 (Service Interface)。其提供(约束)了插件对主体能力可控制的边界。服务定义的越精细,插件控制的粒度越小,能力越大,但耦合度和复杂度也越高。定义一种扩展契约 (Plug-In Interface),其描述了插件应该如何设计以便于主程序发现。并通过插件管理模块 (Plug-In Manager) 来发现、维护插件。插件通过实现主程序规定的扩展契约(通常是一个接口),标明自己的身份,并接收来自主程序的事件响应。通过调动主程序提供的服务,实现和主程序的交互。这一过程,通常都是被主程序以 SDK (Software Development Kit) 的形式封装。

插件机制详解

插件模式是一种应用非常广泛的模式。我们用的很多软件都拥有自身的插件机制,通过插件可以拓展软件的功能。另外,插件模式也广泛应用于 web 方面。例如 Webpack、 Vue CLI、UMI、Babel等。

那么插件系统是如何实现的呢?

如上图所示,插件应用的流程很简单:

其中,第 3 步的时候,回去调用插件,调用插件时会在主应用或者状态库中添加一系列的属性和钩子。插件调用完毕后,在主应用中就可以使用这些被插件添加的属性和钩子,以此来拓展应用的功能。

关键地方在于插件的形式及插件接口的设计。

插件的形式多种多样,不同的应用有不同的设计。例如 Webpack 插件是一个对象,必须对外暴露一个 apply 方法;UMI 及 VUE CLI 的插件是函数的形式。
毫无疑问,每种插件系统都提供了固定的插件 API 供插件开发者使用,插件 API 的设计也是一个重点。

那么现在,我们可以根据以上的流程实现一个简单的拥有插件系统的 Demo。

这里,我们规定我们的插件是一个函数,接收 PluginApi 实例作为参数。

假如我们的应用入口非常简单,实例化主应用类,执行 run 方法,如下所示

现在我们的主应用已经实现。接下来实现我们关键的对外API,即 PluginApi。

至此,我们的插件化机制已经实现。那么接下来,我们来依据我们的插件系统写个插件

那么,现在使用 ts-node 运行index.ts,我们就能看到如下输出:

与我们预计的效果是相同的。

插件是怎么编写的,原理是什么

这些软件把常用功能和将来可能增加插件系统接口设计原理的功能做成设计良好的接口插件系统接口设计原理,在需要改变或增加功能的时候插件系统接口设计原理,增加的插件和原有的软件间的接口并没有改变插件系统接口设计原理,所以能运行在一起。除插件系统接口设计原理了一楼说的书,软件工程的书里也会提到组件的思想原理。
打个比方,就像一些电子产品,可能将来才会出现,但只要支持USB接口,就可以使用在电脑上面。

Vue入坑史,插件系统详解

在谈主题插件之前,我想先引出两个关于 Vue 的问题,这也是我存在的两个疑问,希望有人能够帮忙解答。

如果你比较心急,可以直接跳到 Vue.use源码解读 。

这两个是我最近在开发过程中遇到的问题,也没有找到相关的答案,希望有谁能够帮忙解答,在此先行谢过了。

Vue 的插件一般就是用来 扩展Vue的功能 。比如,当需要 Vue 实现 Ajax 请求功能,我们希望通过 this.$get(url) 的形式就可以发送一个 get 请求。那么,我们就需要给 Vue 的实例添加一个 $get 方法, Vue 实例本身是没有这个方法的。

Vue 的一些插件:

在创建 Vue 实例之前,通过全局方法 Vue.use() 来使用插件:

是不是很简单,好像也没有什么好说的。

有时候,我们看到某些插件使用起来可能有些不一样。比如使用 vuex :

其实本质上还是一样的,也是通过 Vue.use() 方法注册插件。只不过它有一个 store 对象,然后并将 store 对象作为 Vue 根实例的属性,以便组件通过 this.$store 这种形式来访问。

其实当通过 Vue.use() 注册插件时,内部会自动调用插件的 install() 方法。也就是说,插件必须要提供一个公开的 install() 方法,作为接口。该方法第一个参数是 Vue ,第二个参数是可选的 options 对象。

总结起来说,插件是一个对象。该对象要有一个公开的 install() 方法,那么写起来可能是这样的:

在 install() 方法中,我们通过参数可以拿到Vue对象,那么,我们就可以对它做很多事情。

这里直接就看几个插件的源码吧,看看他们是怎么写的,其实我也是参照了这些源码才真正弄明白了插件是怎么一回事。源码很长,这里只说一些关键点。

针对 vue-resource 插件问题,我查看了一下 vue 的源码,它的源码是这样的:

通过源码,我们知道, Vue插件可以是一个对象或者是一个函数 。只有当插件实现了 install 接口时(有 install 这个函数时),才会调用插件的 install 方法;否则再判断插件本身是否是一个函数,如果是,就直接调用它。

现在就能很好的解释 vue-resource 插件的写法了。好吧,我也是刚刚得知,又长了一点见识。

其实官网也有 说明 :

写一篇文章,对别人来说是一种分享,其实对自己来说更是一种提高。因为你要写好一篇文章,一方面你得尽量保证其正确性,有时候你不得不亲自去验证,另一方面也是对自己所学的知识进行一遍系统的复习和整理。

如果你有时间,我建议你多写一些技术类文章;如果你实在没时间写,那也要多读读别人写的文章。

浏览器插件的原理

插件是一种遵循一定规范的应用程序接口编写出来的程序。很多软件都有插件,插件有无数种。例如在IE中,安装相关的插件后,WEB浏览器能够直接调用插件程序,用于处理特定类型的文件。

MyBatis分页插件的原理

在MyBatis内部定义插件系统接口设计原理了一个拦截器接口

所有的插件都要实现该接口,来,插件系统接口设计原理我们看看这个接口的定义

public interface Interceptor {

Object intercept(Invocation invocation) throws Throwable;

Object plugin(Object target);

void setProperties(Properties properties);

}
那么其中一个关键的方法就是intercept,从而实现拦截

分页插件的原理就是使用MyBatis提供的插件接口,实现自定义插件,在插件的拦截方法内,拦截待执行的SQL,然后根据设置的dialect(方言),和设置的分页参数,重写SQL ,生成带有分页语句的SQL,执行重写后的SQL,从而实现分页

所以原理还是基于拦截器 关于插件系统接口设计原理和插件接口如何设计的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。 插件系统接口设计原理的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于插件接口如何设计、插件系统接口设计原理的信息别忘了在本站进行查找喔。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:接口自动化框架推荐(主流自动化框架)
下一篇:做接口测试签名无效的原因(接口签名验签)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~