设计模式之代理模式—静态代理

1 什么是代理模式

代理模式(Proxy Pattern):代理模式是 Java 常见的设计模式之一。所谓代理模式是指客 户端并不直接调用实际的对象,而是通过调用代理对象,来间接的调用实际的对象。比如中介。如下图
在这里插入图片描述

2 为什么使用代理模式

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

3 实现代理模式

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

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

4 代码部分

4.1 创建公共的接口

public interface Rent {
    
     
		void renting(); // 租房方法
	}

4.2 创建被代理角色

public class Person implements Rent {
    
     
// 重写租房方法
@Override 
   public void renting() {
    
     
	System.out.println("某人 有房出租"); 
    } 
}

4.3 创建代理角色

public class StaticProxy implements Rent {
    
     
	private Rent rent; 
	public StaticProxyRent(Rent rent){
    
     
		this.rent = rent; 
	}
	@Override 
	public void renting() {
    
     
		System.out.println("向房客出租房屋"); 
		this.rent.renting(); 
		System.out.println("完成售后服务"); 
	} 
}

4.4 创建测试类进行测试

public class StaticProxyTest {
    
    
public static void main(String[] args) {
    
     
	Rent rent = new Person(); 
	StaticProxy staticProxy = new StaticProxy(rent); 	
	staticProxy.renting(); 
	} 
}

4.5 运行结果
在这里插入图片描述

5 总结

我们总结一下,其实代理模式就是,房东,中间商,租房者,这三者的关系。房东有房子要出租,找中间商就行,并且一个中间商可以有多个房东,大大减少了房东的压力,也给用户更多的选择。并且,中间商可以扩展很多服务,比如,物业,娱乐等。但是静态代理有很大的缺点,就是随着被代理对象的增多,我们发现代理对象的压力越来越大,而且里面书写的代码也是比较臃肿的。

猜你喜欢

转载自blog.csdn.net/wjf_jone/article/details/108910539