设计模式---静态代理模式

目录

  • 简介
  • 包含角色
  • UML类图
  • java实现
  • 优缺点

1. 简介:

给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用,在 AOP实现、拦截器、中介、黄牛、媒婆等应用场景中使用,主要是为了完成自己不想做但是有不得不做的事情


2. 包含角色

###抽象角色
一般使用接口或者抽象类来实现

2.2 真实角色

被代理的角色

2.3 代理角色

代理真实角色,代理真实角色后一般会做一些附属的操作


3. UML类图

静态代理模式uml

4. java实现

4.1 抽象角色

/**
 * @Auther: chengqj
 * @Description: 抽象角色
 */
public interface Person {
    void findLove();
}

4.2具体角色

/**
 * @program: proxy
 * @description: 具体角色
 * @author: chengqj
 * @create: 2018-07-27 09:23
 **/
public class ChengqjPerson implements Person{

    @Override
    public void findLove() {
        System.out.println("chengqj 找对象");
    }
}

4.3 代理角色

/**
 * @program: proxy
 * @description: 代理角色
 * @author: chengqj
 * @create: 2018-07-27 09:24
 **/
public class MeiPoProxy {
    private Person person;

    public MeiPoProxy(Person person) {
        this.person = person;
    }

    public void findLove() {
        System.out.println("物色人员");
        person.findLove();
        System.out.println("媒婆后续跟踪");
    }
}

4.4 测试

Person person = new ChengqjPerson();
new MeiPoProxy(person).findLove();

5. 优缺点

5.1 优点:

业务类只需要关注业务逻辑本身,保证了业务类的重用性。这是代理的共有优点。

5.2 缺点:

1)代理对象的一个接口只服务于一种类型的对象,如果要代理的方法很多,势必要为每一种方法都进行代理,静态代理在程序规模稍大时就无法胜任了。
2)如果接口增加一个方法,除了所有实现类需要实现这个方法外,所有代理类也需要实现此方法。增加了代码维护的复杂度。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值