C#面试题 2

七、AOP如何在代码层面实现?

①静态代理实现AOP,自己写代理对象;

②动态代理实现AOP,运行时动态生成一个代理对象。

静态代理的实现:①装饰器模式(允许向一个现有的对象添加新的功能,同时又不改变其结构。作为现有类的包装。)②代理模式:一个类代表另一个类的功能。

这俩模式的相同点:实现某个接口;都有构造函数,构造函数去指定他所代理或者装饰对象在业务方法的前面和后面去增加自定义的方法。

差异:关注在一个对象上动态添加方法,而代理模式关注控制对的象访问。

动态实现AOP,有两个门派:①代码织入(分动态、静态)②反射实现。

静态织入直接修改IL语言,编译器的扩展;反射实现,有一些AOP的框架,比如,Romoting(分布通信框架)、Castle(ORM、IOC、MVC、AOP)、Unity。

八、三层架构?

整个应用划分为三个层:界面层、逻辑层、数据层。(自上而下的层层依赖,级联修改。)

C#面试题 2_第1张图片

区分层次的目的是高内聚低耦合。

依赖倒置原则DIP:1.高层模块不应该依赖底层模块,两者都应该依赖其抽象;2.抽象不应该依赖于实现,实现应该依赖于抽象。

模块间的依赖通过抽象发生的,实现类之间不发生直接的依赖关系,依赖关系是通过接口或者抽象类产生的。

 

你可能感兴趣的:(面试,c#)