设计模式之代理模式(结构型模式)

目录

1、介绍

2、优缺点

3、主要角色

4、代码演示

5、其他


1、介绍

在代理模式(Proxy Pattern)中,一个类代表另一个类的功能。

2、优缺点

优点:

  • 职责清晰:真实的角色就是实现实际的业务逻辑,不用关心其他非本职责的事务,通过后期的代理完成一件完成事务,附带的结果就是编程简洁清晰。
  • 代理对象可以在客户端和目标对象之间起到中介的作用,这样起到了中介的作用和保护了目标对象的作用。
  • 高扩展性

缺点:

  • 由于在客户端和真实主题之间增加了代理对象,因此有些类型的代理模式可能会造成请求的处理速度变慢
  • 实现代理模式需要额外的工作,有些代理模式的实现非常复杂

3、主要角色

  • 抽象角色:通过接口或抽象类声明真实角色实现的业务方法
  • 真实角色:实现抽象角色,定义真实角色所要实现的业务逻辑,供代理角色调用
  • 代理角色:实现抽象角色,是真实角色的代理,通过真实角色的业务逻辑方法来实现抽象方法,并可以附加自己的操作

4、代码演示

//1、抽象角色
package com.wmj.sjms01;
public interface Image {
	void display();
}

//2、真实角色
public class RealImage implements Image {
	@Override
	public void display() {
		System.out.println("真实对象的业务");
	}
}

//3、代理角色
public class ProxyImage implements Image {
	private Image image = new RealImage();
	
	@Override
	public void display() {
		System.out.println("业务前准备工作");
		image.display();
		System.out.println("业务后扫尾工作");
	}
}

//4、测试
public static void main(String[] args) {
		Image image = new ProxyImage();
		image.display();
	}

执行结果:

业务前准备工作
真实对象的业务
业务后扫尾工作

5、其他

看到过一个比喻,觉得很贴切,能帮助理解代理类:猪八戒去找高翠兰结果是孙悟空变的,可以这样理解:把高翠兰的外貌抽象出来,高翠兰本人和孙悟空都实现了这个接口,猪八戒访问高翠兰的时候看不出来这个是孙悟空,所以说孙悟空是高翠兰代理类

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值