Java设计模式--代理模式

一、代理模式分类

Java中代理模式分为两种:静态代理和动态代理,本篇文章主要介绍静态代理。

二、静态代理模式的构成

静态代理模式由三个部分构成:

  • 一个公共的接口
  • 一个被代理角色
  • 一个代理角色

三、静态代理模式的实现

1. 创建公共接口

package com.design.pattern.proxy;
/**
 *
 *  出租房子接口
 *
 */
public interface RentHouse {
    /**
     * 出租房子
     */
    void rentHouse();
}

2.创建被代理角色

package com.design.pattern.proxy;
	/**
	 * 房东
	 */
	public class Landlord implements RentHouse {
	    @Override
	    public void rentHouse() {
	        System.out.println("我是房东,我有房子要出租...");
	    }
	}

3.创建代理角色

   package com.design.pattern.proxy;
	/**
	 *
	 *  中介
	 *
	 */
	public class Lntermediary implements RentHouse {

    // 通过组合的方式与被代理类产生联系
    private Landlord landlord;

    public Lntermediary(Landlord landlord){
        this.landlord = landlord;
    }

    @Override
    public void rentHouse() {
        System.out.println("我是中介,我帮房东出租房子...");

        //调用房东的rentHouse()
        landlord.rentHouse();

        System.out.println("我是中介,房子出租成功,我收取一个月房租作为代理费...");
    }
    
}

4.创建测试类

package com.design.pattern.proxy;

public class TestProxyStatic {

    /**
     * 静态代理测试
     */
    public  static void main(String[] args) {
        //创建一个房东
        Landlord landlord = new Landlord();

        //创建一个中间商
        Lntermediary lntermediary = new Lntermediary(landlord);

        //客户也可以通过中介租房子
        lntermediary.rentHouse();
    }
}

5.运行结果

 System.out: 我是中介,我帮房东出租房子...
 System.out: 我是房东,我有房子要出租...
 System.out: 我是中介,房子出租成功,我收取一个月房租作为代理费...

四、代理模式的定义

所谓代理模式是指客户端并不直接调用实际的对象,而是通过调用代理对象,来间接的调用实际的对象。通俗的来讲代
理模式就是我们生活中常见的中介

五、为什么要有代理模式

  • 隔离作用:在某些情况下,一个客户类不想或者不能直接引用一个委托对象,而代理类对象可以在客户类和委托对象之间起到中介的作用,其特征是代理类和委托类实现相同的接口。
  • 开闭原则:代理类除了是客户类和委托类的中介之外,我们还可以通过给代理类增加额外的功能来扩展委托类的功能,这样做我们只需要修改代理类而不需要再修改委托类,符合代码设计的开闭原则。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

幸福在路上wellbeing

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值