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

【#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();





    推荐阅读