设计模式之代理模式与面向切面

本文介绍了面向切面编程(AOP)的概念,强调了切面在程序中的独立性和组合性。通过一个动态代理的实例展示了如何使用Java实现AOP,详细阐述了动态代理的编写过程和流程图。此外,还对Java代理模式进行了补充,区分了静态代理和动态代理,并提供了静态代理的示例。
摘要由CSDN通过智能技术生成

前面提到了这个观察者模式,那这里顺便说一下工厂模式和面向切面,我们使用动态代理实现面向切面,使用配置文件实现一个组件管理吧,这个也是以前写的博文。

何为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<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值