一个面向切面编程的练习程序。其中面向切面编程采用的是配置文件的做法,支持多个前置方法和后置方法,按照配置文件中的优先级区分执行顺序。食物类通过注解获取食物名称和价格。
\--aop
│ FoodInfo.java
│ Kitchen.java
│ MyAspect.java
│ Proxyhandler.java
│ Restaurant.java
│ RestaurantInterface.java
│ TestRestaurant.java
│
└─foods
Beef.java
Broccoli.java
Chicken.java
Food.java
Newfood.java
foods包下的类
食物类,其中食物名称和价格用注解标注。
FoodInfo.java
注解,食物名称和价格。
Kitchen.java
工厂类,主要负责根据名称创建食物实例、获取食物价格。
MyAspect.java
切面方法。
Proxyhandler.java
调用处理器类,在其中实现面向切面编程,在需要切入的方法前后分别按照优先级执行前置方法和后置方法。
Restaurant.java
RestaurantInterface的实现类,实现餐厅的方法。
RestaurantInterface.java
接口,定义餐厅的方法。
TestRestaurant.java
主类,完成点餐功能。在开始时读入并加载配置文件,创建动态代理对象,之后执行正常的点餐流程,当用户点餐时调用Kitchen创建食物类,下单并享用食物。
总结
这个程序主要使用动态代理实现了AOP,从配置文件中读取前置方法和后置方法。