urenai 发表于 5 天前

大家看看这样合理吗?

举个例子:

<火山程序 类型 = "通常" 版本 = 1 />

类 C
{
    变量 B <类型 = B>

    方法 实际使用处
    {
      B.a方法 ()

      // 下面是实际效果;
      // B.B方法_前初始化或清理 ()
      // B.a方法 ()
      // B.B方法_后初始化或清理 ()

    }

    #
}

类 B <基础类 = A>
{
    方法 B方法_前初始化或清理 <公开 @视窗.跟随方法前 = "a方法">
    {

    }

    方法 B方法_后初始化或清理 <公开 @视窗.跟随方法后 = "a方法">
    {

    }

    #
}

类 A <公开>
{
    方法 a方法 <公开>
    {

    }

    #
}





urenai 发表于 4 天前

@飞扬工作室 @创世魂

龙纹 发表于 4 天前

这种需求只用C++就足够,我之前封装过一个库,其中就有AOP的实现代码,而且在火山中正常使用,例子在这里:核心用户区某个问题的解决方案。使用也简单,不过缺点是实现代码晦涩难懂,想要修改有一定难度。

urenai 发表于 4 天前

龙纹 发表于 2025-3-25 13:12
这种需求只用C++就足够,我之前封装过一个库,其中就有AOP的实现代码,而且在火山中正常使用,例子在这里: ...

对,就是这个意思。

urenai 发表于 4 天前

本帖最后由 urenai 于 2025-3-25 21:53 编辑

龙纹 发表于 2025-3-25 13:12
这种需求只用C++就足够,我之前封装过一个库,其中就有AOP的实现代码,而且在火山中正常使用,例子在这里: ...
龙总你说有没有一种可能:

前置 和 后置 依附函数,可以继承 参数
即:无参 不继承
       有参   继承

也就是说   

a方法(有参)
继承:b方法前(参数变量类型相同)
不继承:b方法前(无参)

龙纹 发表于 3 天前

AOP的优点就是将核心逻辑和非核心逻辑分离,使我们可以专注于核心逻辑,方便代码编写和维护。
至于其他的一些公共行为,就是非核心逻辑。比如业务流程就少不了日志和权限验证,可以把这两个公共行为"横切"出来,也就是"切面"。
但是切面的数量不是固定的,而是可以*自*由组合,某个方法你可能需要一个权限验证,这需要参数,而计时的切面显然不需要任何参数。考虑到AOP代码的实际编写,想要兼容两者,只能在所有的方法中都传递参数。
在前面提到的C++代码实现中,每个切面的before、after方法参数都相同,就是这个原因。
你说的无参函数,你不使用这些参数就是了...

urenai 发表于 3 天前

很强

urenai 发表于 前天 12:06

@飞扬工作室

说句话啊,能不能给实现啊
页: [1]
查看完整版本: 大家看看这样合理吗?