设计模式之静态代理模式实战

简介: 静态代理模式很简单,代理类和实现类都实现相同的接口,然后通过代理类来调用实现类的方法。如我们想保存用户信息之前打印用户信息,或者保存用户信息之后把这些信息缓存下来,即在运行方法前后插入执行一个别的操作,下面是一个简单的示例。

静态代理模式很简单,代理类和实现类都实现相同的接口,然后通过代理类来调用实现类的方法。

如我们想保存用户信息之前打印用户信息,或者保存用户信息之后把这些信息缓存下来,即在运行方法前后插入执行一个别的操作,下面是一个简单的示例。

用户接口

public interfaceUserInterface{

boolean saveUser(User user);

}

用户接口实现

public classUserInterfaceImplimplements UserInterface {

@Override

public boolean saveUser(User user) {

System.out.println("保存用户: " + user.getName());

return true;

}

}

public classTest{

public static void main(String[] args) {

testStaticProxy();

}

private static voidtestStaticProxy() {

User user = new User();

user.setName("tom");

new StaticProxy(new UserInterfaceImpl()).saveUser(user);

}

static class StaticProxy implements UserInterface {

private UserInterface userInterface;

public StaticProxy(UserInterface userInterface) {

this.userInterface = userInterface;

}

@Override

public boolean saveUser(User user) {

System.out.println("静态代理-开始保存用户");

boolean result = userInterface.saveUser(user);

System.out.println("静态代理-保存用户结果: " + result);

System.out.println();

return result;

}

}

}

结果输出:

静态代理-开始保存用户

保存用户: tom

静态代理-保存用户结果: true

通过代码实战的方法学习设计模式,是不是觉得静态代理很简单了?

下面问题来了,如果我们想把用户接口内所有的方法都要代理,那我们所有的方法都要代理一遍,又或者之后又添加了新的方法,那又得重新写代理,十分麻烦,明天分享下动态代理的实现,解决了静态代理的不便扩展性。

相关文章
|
1月前
|
设计模式 存储 uml
C++ 设计模式实战:外观模式和访问者模式的结合使用,派生类访问基类的私有子系统
C++ 设计模式实战:外观模式和访问者模式的结合使用,派生类访问基类的私有子系统
29 1
|
3月前
|
设计模式 C#
设计模式之代理模式(Proxy)
设计模式之代理模式(Proxy)
|
4月前
|
设计模式 XML JSON
二十三种设计模式全面解析-代理模式进阶篇:揭秘远程代理
二十三种设计模式全面解析-代理模式进阶篇:揭秘远程代理
|
3月前
|
设计模式
设计模式-代理模式
设计模式-代理模式
|
3月前
|
设计模式 数据安全/隐私保护
设计模式之代理模式
设计模式之代理模式
|
4月前
|
设计模式 缓存
二十三种设计模式全面解析-代理模式(Proxy Pattern)详解:探索隐藏于背后的力量
二十三种设计模式全面解析-代理模式(Proxy Pattern)详解:探索隐藏于背后的力量
|
1月前
|
设计模式 JavaScript Java
设计模式——代理模式
一文讲清楚设计模式中的代理模式
21 0
设计模式——代理模式
|
1月前
|
设计模式 Java 数据库连接
【重温设计模式】代理模式及其Java示例
【重温设计模式】代理模式及其Java示例
23 2
|
1月前
|
设计模式 uml
设计模式之代理模式
设计模式之代理模式
|
1月前
|
设计模式 Arthas Java
【设计模式】代理模式
【设计模式】代理模式