Phi*_*ere 14 oop paradigms aop
我浏览了在线文档,阅读了wiki条目,帖子和博客,但我仍然感到困惑.
我一直是一个OO男人,我想知道我是否需要犯叛国罪.
说真的,我很快就要开始一个新项目,我想在开始时做出正确的选择.
Noo*_*ilk 18
简而言之,面向方面编程是什么?
简而言之,AOP能够以不显眼的方式将动作注入另一个程序的典型流程中.它允许您捕获类实例,方法调用,赋值等.
它比面向对象编程更好吗?我应该忘掉OOP吗?
不,不.它与支持它的任何编程环境一起使用.(往上看).
如果没有,我怎么知道何时使用其中一个?两者之间的主要区别是什么?
通常,当您想要在数百个类上实现某种操作时,您可以使用AOP,而无需自己操作类.典型的例子是安全性(授权调用给定方法/类的权限)或日志记录.但根据我的经验,我不会用它.(老实说,我根本不使用它).
如上所述,主要区别并不存在,因为它们不具有可比性.但是,假设你想"正常"实现日志记录,你只需在适当的位置调用记录器:
log.write("hello");
Run Code Online (Sandbox Code Playgroud)
但是使用AOP,您可以创建一个附加到每个方法调用的"方面",并记录"方法b调用".关键在于,在AOP中你的方法更像是"霰弹枪":你附加到一切,或者只是一小部分.手动添加日志记录通常更好.
我可以将一个重构到另一个吗?
不太相关,请参阅其他答案.再次使用安全性,您可以从典型的OOP模型交换到AOP模型this.IsAllowed()到if(callingMethod.HasAttribute(foo)){allowed = true; }
希望这些答案有用.如果您希望我进一步扩展,请告诉我.
| 归档时间: |
|
| 查看次数: |
1158 次 |
| 最近记录: |