这样使用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();
}
}
}
到底在什么场合下应该怎样做呢?设计这东西总是真是很难把握,一旦设计者的执著就有可能此引发一些设计上的问题,而这些问题往往在后期修改或扩展才能体现出来。
大家发表一下各自意见来讨论一下。
[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();
}
}
}
到底在什么场合下应该怎样做呢?设计这东西总是真是很难把握,一旦设计者的执著就有可能此引发一些设计上的问题,而这些问题往往在后期修改或扩展才能体现出来。
大家发表一下各自意见来讨论一下。
相关文章推荐
- 使用SpringAop 验证方法参数是否合法
- 使用SpringAop 验证方法参数是否合法
- 使用SpringAop 验证方法参数是否合法
- 使用SpringAop 验证方法参数是否合法
- 使用SpringAop 验证方法参数是否合法
- Android 如何使用layoutopt检验布局文件是否合理
- 使用SpringAop 验证方法参数是否合法
- Map的使用。你是否有落入过这样的陷阱?
- Android 如何使用layoutopt检验布局文件是否合理
- Spring的JdbcTemplate使用,是否还需要手工或者aop指定关闭conn连接( 使用JdbcTemplate是否需要关闭连接)
- 按键精灵脚本多个if嵌套的时候 要合理的使用delay去判断界面是否发生变化
- Android 如何使用layoutopt检验布局文件是否合理
- 使用spring声明式事务,spring使用AOP来支持声明式事务,会根据事务属性,自动在方法调用之前决定是否开启一个事务,并在方法执行之后决定事务提交或回滚事务。
- 【layoutopt】Android 如何使用layoutopt检验布局文件是否合理
- 使用Spring Aop验证方法参数是否合法
- 使用SpringAop 验证方法参数是否合法
- 数据库是否使用外键,及视图,索引,存储过程的一些说明(zz)
- 使用注解方式配置 AOP 的基本步骤(复习)
- instanceof的使用: 对象与构造函数在原型链上是否有关系
- IOS是否在项目中存在,所使用的反射那点事