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

推荐订阅源

Simon Willison's Weblog
Simon Willison's Weblog
P
Privacy International News Feed
www.infosecurity-magazine.com
www.infosecurity-magazine.com
T
Troy Hunt's Blog
Hacker News - Newest:
Hacker News - Newest: "LLM"
Attack and Defense Labs
Attack and Defense Labs
S
Secure Thoughts
V2EX - 技术
V2EX - 技术
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
O
OpenAI News
Cloudbric
Cloudbric
Google Online Security Blog
Google Online Security Blog
Schneier on Security
Schneier on Security
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
Help Net Security
Help Net Security
Cyberwarzone
Cyberwarzone
G
GRAHAM CLULEY
L
Lohrmann on Cybersecurity
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Spread Privacy
Spread Privacy
NISL@THU
NISL@THU
N
News and Events Feed by Topic
T
Tenable Blog
S
Security @ Cisco Blogs
N
News and Events Feed by Topic
The Hacker News
The Hacker News
C
CXSECURITY Database RSS Feed - CXSecurity.com
宝玉的分享
宝玉的分享
月光博客
月光博客
酷 壳 – CoolShell
酷 壳 – CoolShell
美团技术团队
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Google DeepMind News
Google DeepMind News
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
T
Tailwind CSS Blog
V
Visual Studio Blog
P
Proofpoint News Feed
Webroot Blog
Webroot Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
博客园 - 三生石上(FineUI控件)
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Jina AI
Jina AI
雷峰网
雷峰网
T
The Blog of Author Tim Ferriss
Hugging Face - Blog
Hugging Face - Blog
腾讯CDC
L
LangChain Blog
The Register - Security
The Register - Security
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
博客园 - 聂微东

博客园 - 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框架,目前有两种方式实现,通过嵌入字节码和通拖代理。好了今天就说这些。努力!