【发布时间】:2011-04-21 22:17:52
【问题描述】:
我在这里How to organize class interfaces hierarchy?问了一个关于Interface的问题,有人回答了Separation of Concern。
这种与类接口的关注点分离和 AOP 之间是否存在联系?
【问题讨论】:
我在这里How to organize class interfaces hierarchy?问了一个关于Interface的问题,有人回答了Separation of Concern。
这种与类接口的关注点分离和 AOP 之间是否存在联系?
【问题讨论】:
AOP 只是一个不同的编程范式,它下面有一个支柱。
类接口是更具体的东西,当您想要定义不同类之间通用的属性时应该使用它。
所提到的关注点分离可能与那些不同的属性有关,当它们被发现并且不同时,应该允许创建新接口,从而允许其他类实现它们,并使它们有可能有一些共同点将它们联系起来,并且是可见和明确的。
AOP 不应该用于那个目的,因为它涉及到它自己的范式,而且它是你已经可以通过接口实现的任务。 AOP 在另一个层面上改变了事物,允许您通过定义要通知的切入点来改变整个程序的行为。
【讨论】:
使用接口,您可以将类似的方法组合在一起,然后在实现中封装细节。这通常会使您的应用程序更具可移植性。例如,如果您有针对不同数据库供应商的多个 DAO 实现,您可以创建一个接口并为每个数据库实现它。您可以在保持接口结构不变的情况下更换实现。
使用 AOP,您可以解耦应用程序中的横切关注点。例如,如果您的所有 DAO 方法都需要事务管理,那么这是一个常见问题,您可以在那里使用 AOP 模式。
关注点分离是一个通用术语,也是一种常见的编程原则。你想尽可能多地解耦。同时使用接口和 AOP,可以促进解耦。
【讨论】: