【#yyds干货盘点# 设计模式之代理模式(静态代理)】登山则情满于山,观海则意溢于海。这篇文章主要讲述#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();
/**
* 在实现方法前可以做的事情
*/
publicvoidbefore()
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干活盘点# 4.1 HTML5 Geolocation(定理定位)
- #yyds干货盘点# python-redis-lock锁
- #yyds干货盘点#Python图像处理,cv2模块,OpenCV实现模板匹配
- Python训练营Python每日一练----第15天:字串排序
- #yyds干货盘点# mybatis源码解读(cache包(缓存机制功能))
- RDBMS和HBase之间有哪些区别()
- Python和C#之间有什么区别()
- 进程和用户级别线程之间有什么区别()
- ++*p、*p++和*++p之间有什么区别()