zoukankan      html  css  js  c++  java
  • AOP

    最近做了AOP, 监测工程中的某些数据. 但是不能影响原工程, 也不在原工程中写代码; 面向切面编程, AOP.
    首先使用了个开源的第三方, Aspects;
    关于框架的搭建
    第一个版本主要是收集Node中的数据. 之后肯定还会收集其他的数据; 主要就是对 WebSocket 中的方法, 插入代码. 所以需要一个管理类, 管理要去收集哪些数据; 在管理类中有一个数组, 其中存放着使用了的对象.这些对象去收集需要的数据; 这些对象可随时添加和移除; 这些对象都有一些公共特征, 所以写成一个公共的基础类(baseObject);
    既然是面向切面编程, 不能影响了原代码的效率, 所以需要在自己的线程中处理;

    Node数据收集
    思路:在WebSocket调用 setDelegate: 的时候, 把delegate 设置成自己的对象, 操作后再转发给原来的对象; 在继承于baseObject的类中, 要去设置新的代理, 并给其他需要关注的方法插入代码. 本来想着使用单例, 这样就可以保证只有一个对象管理WebSocket的有关代码.但是这样用的单例太多, 其实完全没有必要.(之前为什么会用单例, 是因为在管理类中, 要控制Socket 数据收集的开启和关闭, 因为不在一个方法中, 所以不能找到同一个对象, 使用了数组管理, 并且给其加上一个分类type标签, 就可以区分出具体的对象, 因为每种只有一个对象, 所以只需要一个是什么类型的标签就可以);
    在hook方法中, 要对多个socket方法进行操作, 每次都要设置代理为A, 怎么可以保证是同一个A? 可以给 socket 添加一个属性, 每次找到的都是同一个A; 给 NSObject 写一个分类, 添加一个属性, 用来存储新的代理对象; 因为如果外界使用了两个 socket 只有一个代理的话, 肯定是不对的;
    我们其实没有使用 socket 对象, 只是代理方法中, 引用了 Socket对象, 我们将代理方法中的socket 改成 id类型, 就不必依赖 WebSocket 框架了.


  • 相关阅读:
    ASP.NET + EF + SQL Server搭建个人博客系统新手系列(一):界面展示
    PHP中文乱码分类及解决办法大全
    分享一个根据具体的日期判断星座的PHP函数
    WHERE条件中or与union引起的全表扫描的问题
    linux下SVN CVS命令大全
    Ubuntu装完后要做的几件事
    Table被web编程弃用的原因
    PHP json_decode返回null解析失败原因
    powerpoint教程资料,PPT的
    一些matlab教程资源收藏,使用matlab编程的人还是挺多的
  • 原文地址:https://www.cnblogs.com/lion-witcher/p/7324107.html
Copyright © 2011-2022 走看看