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

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

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

用户接口
public interface UserInterface {
    boolean saveUser(User user);
}

用户接口实现
public class UserInterfaceImpl implements UserInterface {
    @Override
    public boolean saveUser(User user) {
        System.out.println(“保存用户: ” + user.getName());
        return true;
    }
}

public class Test {

    public static void main(String[] args) {
        testStaticProxy();
    }

    private static void testStaticProxy() {
        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

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

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

本站所有文章均来自互联网,如有侵权,请联系站长删除。极客文库 » 设计模式之静态代理模式实战
分享到:
赞(0)

评论抢沙发

评论前必须登录!