分享到:
发表于 2025-03-03 14:32:53 楼主 | |
AOP,也就是Aspect Oriented Programming,它是一种编程范式,旨在通过分离横切关注点来提高代码的模块化,将一些常见的关注点,比如日志记录、事务管理、安全控制等从核心业务逻辑中分离出来,使代码更易维护和扩展。 提到AOP,大家最常见的就是日志的记录,AOP可以在不修改原有业务代码的情况下,通过代码插桩的方式,为应用程序添加日志记录功能;当然了,除了日志记录功能,相信大家肯定见过很多的三方的统计,比如友盟,神策等等,他们是怎么来统计的页面的访问量?没错,就是用到了AOP。 AOP,说的简单直白一点,就是,它可以实现对原有的对象方法,在执行前后,进行插桩,同样,在鸿蒙的开发中,我们也可以直接对其方法进行替换操作,如何实现,在Api 11之后使用Aspect对象即可。 方法之前插入函数 addBefore方法,可以在在指定的类对象的原方法执行前插入一个函数,执行顺序就会先执行插入的函数,后执行原有函数。 参数说明简单举例import util from'@ohos.util' 还是上述的案例,我们把util.Aspect.addBefore换成util.Aspect.addAfter,其它逻辑不变,需要注意的是,最终返回值是插入函数执行后的返回值,也就是意味着,最后的打印是addAfter中的函数返回值,我们看下日志: 20238-20238 A03d00/JSAPP com.example.demo Ⅰ ===原始方法获取:AbnerMing 20238-20238 A03d00/JSAPP com.example.demo Ⅰ ===打印日志:输出一条日志 20238-20238 A03d00/JSAPP com.example.demo Ⅰ ===追加逻辑后获取:程序员大鸣 替换函数 replace方法,会将指定的类中方法的原方法替换为另一个函数,replace接口执行完成后,只会执行替换后的逻辑,原有的函数逻辑不再执行。 参数说明简单案例import util from'@ohos.util' 我们在getName方法中打印了一条日志,当我们执行replace方法之后,可以发现并没有执行打印,因为函数已经被替换,原始的函数逻辑就不再执行。 14877-14877 A03d00/JSAPP com.example.demo Ⅰ ===打印日志:输出一条日志 14877-14877 A03d00/JSAPP com.example.demo Ⅰ ===追加逻辑后获取:程序员大鸣 相关总结 正确的运用AOP,可以提升代码的模块化、复用性、可维护性和灵活性,同时降低了耦合度,使系统更易于扩展和维护。 |
|
楼主热贴
个性签名:无
|
发表于 2025-03-10 10:56:40 1楼 | |
顺便给大家分享一下,民族企业大厂,[前后端测试](https://jsj.top/f/o38ijj)捞人,待遇给的还不错,感兴趣的可以来试试! | |
针对ZOL星空(中国)您有任何使用问题和建议 您可以 联系星空(中国)管理员 、 查看帮助 或 给我提意见