惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
C
CERT Recently Published Vulnerability Notes
C
Cybersecurity and Infrastructure Security Agency CISA
P
Proofpoint News Feed
Security Latest
Security Latest
P
Privacy International News Feed
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
AI
AI
Cisco Talos Blog
Cisco Talos Blog
K
Kaspersky official blog
S
Secure Thoughts
PCI Perspectives
PCI Perspectives
Simon Willison's Weblog
Simon Willison's Weblog
D
DataBreaches.Net
GbyAI
GbyAI
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
大猫的无限游戏
大猫的无限游戏
T
Tailwind CSS Blog
The Cloudflare Blog
阮一峰的网络日志
阮一峰的网络日志
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
罗磊的独立博客
V
Visual Studio Blog
aimingoo的专栏
aimingoo的专栏
H
Hackread – Cybersecurity News, Data Breaches, AI and More
IT之家
IT之家
V
V2EX
Last Week in AI
Last Week in AI
有赞技术团队
有赞技术团队
月光博客
月光博客
酷 壳 – CoolShell
酷 壳 – CoolShell
T
Tenable Blog
T
Threat Research - Cisco Blogs
T
Troy Hunt's Blog
V2EX - 技术
V2EX - 技术
S
Security @ Cisco Blogs
Security Archives - TechRepublic
Security Archives - TechRepublic
Project Zero
Project Zero
The GitHub Blog
The GitHub Blog
Recent Commits to openclaw:main
Recent Commits to openclaw:main
L
Lohrmann on Cybersecurity
F
Full Disclosure
H
Help Net Security
博客园 - Franky
Stack Overflow Blog
Stack Overflow Blog
N
Netflix TechBlog - Medium
Engineering at Meta
Engineering at Meta
A
Arctic Wolf
O
OpenAI News
S
Securelist

博客园 - goodbaby

辞职了 爱上无聊 读程序有感 把网通的网关接口程序重写了 深深陷入困境 我的技术和观点 静态和动态控件回递数据的处理差别 membership and roleship 我的asp.net 2.0初体验 一点技术,一点生活 简单体验多层应用 基于服务的架构 变化,感触 又可以进自己的blog了 浅谈asp.net UI 浅谈验证码 浅谈基于角色的安全 浅谈数据库里的自引用 简单的URL重写
我的AOP初步
goodbaby · 2005-07-13 · via 博客园 - goodbaby
 

AOPOOP的沿深,OOP通过类层次结构组织一个纵向的结构来处理公共行为,

但这样行为被水平的散布在了类层次结构中,一些类拥有了本生与他无关的行为。

AOP为这些公共行为==称为横切出来提供了有效的机制,并织入对象中,这种方式表现出了更到灵活性和许多

优越的特征。这样对象就不用关心这种与核心问题无关的操作。

横切有两种方式:

1动态横切

2静态横切

几个概念:

切入点:就是在哪里将代码织入。

建议:就是运行公共代码。

方面:切入点和建议加起来就是的了。

举个列子说明一下AOP(这里是aspect not agient)在现实中的好处,我想了想,比如说在实现数据层的时候,为了将数据访问代码对立于数据访问厂商的库,我们一般要定义一个接口。

Interface DataAccess

{

  boolean UpdateData(BussinessObj A);

}

public class SqlDataAccess extend DataAccess//for java

{

   public Boolean UpdateData(BussinessObj A)

{

   ….

}

}

public class SqlDataAccess : DataAccess//for C#

{

   public bool UpdateData(BussinessObj A)

{

   ….

}

}

这是oop的方式,但考虑一中情况假如一个厂商的接口规定我们的业务对象要实现一个接口,好了

现在我们不得不把我们的业务对象实现Another接口

这样不好吧,这样就让这个业务对象对其他数据对象不再有效,要是换了其他数据对象就不得不修改这个对象以去除Another这样将导致对供应商代码的直接依赖和耦合。运用方面的静态横切:

public aspect AnotherAspect {
 
   declare parents: BussinessObj implements Another;
 
   public boolean BussinessObj.AnotherMethord(){
     if(this.Perpery () != null){
            return true;
     }else{
            return false;
     }
   }
}

通过这样将Another接口用AOP框架织入BussinessObj

BussinessObj并没有察觉他实现了Another接口,这使得这个对象对其他数据对象都是有意义的,换了其他的,并不需要修改代码。这个列子不一定得体但能够说明问题。总之AOP提供了一种横向的思维,弥补了OOP的不足。

考虑一下现在的应用服务器,比如.net平台下我们要处理象事务,对象池等这些复杂的东西,我们只需声明属性,这样应用服务器会将这些代码织入,完成公共处理。又入jboss4.0现在就是才用了AOP,在容器里的东西就这样实现了事务,对象池这些东西,而且相对与对象的实现方式更加简洁。J2EE不大熟悉不多说了。.netj2ee分别有了自己的AOP框架,目前有两种方式实现,通过嵌入字节码和通拖代理。好了今天就说这些。努力!