#yyds干货盘点# 设计模式之代理模式:静态代理

Posted 浪费人生的风

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了#yyds干货盘点# 设计模式之代理模式:静态代理相关的知识,希望对你有一定的参考价值。

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

1.简述:

代理就是用于通过对真实对象的封装,对原有业务逻辑的扩充,来实现扩展性。。比如持有二方包的某个类,并调用了其中的某些方法。然后出于某种原因,比如记录日志、打印方法执行时间,但是又不好将这些逻辑写入二方包的方法里。所以可以创建一个代理类实现和二方方法相同的方法,通过让代理类持有真实对象,然后在原代码中调用代理类方法,来达到添加我们需要业务逻辑的目的。由于在程序运行前代理类就已经获得目标对象了,所以把这类称为静态代理。

2.代码实现:

/**
* 抽象角色接口
*/
public interface Hello

/**
* 打招呼
*/
public void sayHello();
/**
* 目标对象角色类
*/
public class RealHello implements Hello
/**
* 实现接口的方法
*/
@Override
public void sayHello()
System.out.println("你好");

/**
* 代理对象角色类
*/
public class ProxyHello implements Hello

private Hello realHello;

public ProxyHello(Hello realHello)
this.realHello = realHello;


/**
* 实现接口的方法
*/
@Override
public void sayHello()
before();
realHello.sayHello();
after();


/**
* 在实现方法前可以做的事情
*/
public void before()
System.out.println("摘下耳机");


/**
* 在实现方法后做的事情
*/
public void after()
System.out.println("戴上耳机");

/**
* 客户端,实现代理模式
*/
public class ProxyTest

public static void main(String[] args)
System.out.println("没有代理的,目标对象自己实现:");
Hello hello = new RealHello();
hello.sayHello();
System.out.println("=========================");
System.out.println("代理对象实现的:");
ProxyHello proxyHello = new ProxyHello(hello);
proxyHello.sayHello();



以上是关于#yyds干货盘点# 设计模式之代理模式:静态代理的主要内容,如果未能解决你的问题,请参考以下文章

#yyds干货盘点# 设计模式之代理模式:cglib动态代理

java代理模式和字节码的探索#yyds干货盘点#

#yyds干货盘点#设计模式之单例模式

#yyds干货盘点#网络协议之:还在用HTTP代理?弱爆了!快试试SOCKS5

正向代理与反向代理 #yyds干货盘点#

#yyds干货盘点#nginx代理配置