Ble*_*dof 33
其中一个例子是直接从这个面向方面的程序设计:模块化的激进研究,Youtube视频绘制到显示器.在示例中,您有一个绘图程序,它由点,形状等组成,当发生对这些对象的更改时,您需要告诉显示器更新自身.如果不在一个方面处理它,你最终会重复自己.
正如我所理解的那样,AOP的创建是为了不重复自己的交叉问题,这可能与业务逻辑无关.通过各方面,您可以将这些问题模块化到方面.其中一个例子是记录,但是你可能最终会重复一些不同的事情.它一直在发展,它不再是面向方面的编程,而是面向方面的建模.
有关面向方面编程的更多信息可以从以下来源中找到:
And*_*sen 11
安全
asp.net webcontrols/webparts的友情错误消息
性能
验证:
[NotNull]
public string Property1 { get; set; }
[Length(Min = 10, Max = 20)]
public string Property2 { get; set; }
[Regex(Expression = @"[abc]{2}")]
public string Property3 { get; set; }
Run Code Online (Sandbox Code Playgroud)
撤消 - 我正在调用支持撤消操作的第三方程序集.它要求调用者创建撤消上下文,调用程序集中的某些方法,然后销毁撤消上下文.上下文可以嵌套.此外,如果创建了上下文但仍处于需要重新启动应用程序的不良状态.
通常使用undo我会写这样的东西
void foo()
{
int id = lib.create_undo_context();
try
{
lib.performsomeaction();
lib.performsomeaction();
lib.performsomeaction();
}
finally
{
lib.destroy_undo_context(id);
}
}
Run Code Online (Sandbox Code Playgroud)
使用PostSharp我定义了一个名为[Undo]的属性,该属性在方法启动时创建撤销上下文,并在方法退出时销毁它(即使抛出异常) - 所以代码看起来像这样
[Undo]
void foo()
{
lib.performsomeaction();
lib.performsomeaction();
lib.performsomeaction();
}
Run Code Online (Sandbox Code Playgroud)
实现这个比我展示的要复杂一点,因为即使在存在嵌套撤销上下文的情况下,我也确保清除所有撤消上下文 - 但是你明白了.
小智 5
依赖注入
严格来说,依赖注入只不过是一个横切关注点。许多依赖注入框架使用基于属性的编程风格,如下所示:
public class Car:IDisposable
{
[Inject]
public IGearBox Gearbox { get; set; }
...
}
Run Code Online (Sandbox Code Playgroud)
[Inject] 属性也可以设计为一个方面,而不依赖于外部框架。
归档时间: |
|
查看次数: |
15074 次 |
最近记录: |