前面提到了这个观察者模式,那这里顺便说一下工厂模式和面向切面,我们使用动态代理实现面向切面,使用配置文件实现一个组件管理吧,这个也是以前写的博文。
何为AOP
用不是人话来说就是面向切面编程,什么是切面,就是和我们程序的主体功能关系不大的那一方面,例如,程序的日志功能,这个和程序的主体功能没有任何影响,但是有时候确实必要的,但有时候我又不希望在我的主体程序中出现,这就意味着这个切面必须和我的主体程序这个面保持相对独立,在我需要的时候将其装配即可。事实上我们所谓的切面可以代指所有的功能独立的那一个面,每个面之间不会相互影响,但是又可以在一个组合使用。
实例
在这个实例当中我们将使用一个动态代理的实例以AOP的模式进行编写。
Dynamic agent 的编写
我们先假设个例子以买房子找中介的例子,进行编写
Dome的流程图
为了便于博客的理解我们先查看两个流程图,一个是我们买房子(代理)的流程图,另一个是完整的图。
代理流程图
完整的流程
Dome的项目结构
看名字已经很清楚了,接下来要说明的就是这个项目在一个包day07下面。
完整代码
按照流程图,先给出代理部分,然后给出反射部分。
package day07;
public interface BuyHouse {
public void buyHouse();
}
复制代码
package day07;
public class PersonBuyHouse implements BuyHouse {
public void buyHouse(){
System.out.println("房子很满意,就它了全款!");
}
}
复制代码
package day07;
public interface HouseAgency {
public void FindHouse();
}
复制代码
package day07;
public class HouseAgent implements HouseAgency {
@Override
public void FindHouse() {
// TODO Auto-generated method stub
System.out.println("正在寻找房源");
System.out.println("房源已找到,满足客户需求");
}
}
复制代码
配置文件 bean.properties<