您的位置:首页 > 运维架构

这样使用AOP是否合理

2008-08-13 23:29 330 查看
情况如下:现在有一个User的逻辑处理组件,该组件提供基础的用户处理功能;但后期在写一个Blog的逻辑组件其中包括用户基础的扩展,当用户添加时要在Blog功能的某个表里添加信息;从设计原则来说是不应该修改User组件的里添加用户方法把Blog基础信息加入。那这个时候到底是在Blog组件里新做一个用户添加逻辑方法来把功能整合,还是在Blog组件用AOP功能把User组件添加用户的方法进行拦载切入功能比较合理呢?

[NClay.Services.AspectContainer]

public class UserServiceAspect

{

[NClay.Services.Aspect(typeof(Users.IUserService))]

public void Create(User user)

{

using (TransactionContext tc = new TransactionContext())

{

MethodContext.Invoke(user);

UserSubInfo info = new UserSubInfo();

info.UserID = user.UserID;

DaoContext.Add(info);

tc.Commit();

}

}

[NClay.Services.Aspect(typeof(Users.IUserService))]

public void Delete(string[] userid)

{

using (TransactionContext tc = new TransactionContext())

{

MethodContext.Invoke(userid);

ModelContext.UserSubInfo.UserID.In(userid).Delete<UserSubInfo>();

tc.Commit();

}

}

}

到底在什么场合下应该怎样做呢?设计这东西总是真是很难把握,一旦设计者的执著就有可能此引发一些设计上的问题,而这些问题往往在后期修改或扩展才能体现出来。

大家发表一下各自意见来讨论一下。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: