首页 新闻 会员 周边

静态代理模式为什么要实现同一个接口啊?

0
[待解决问题]

从实现功能的角度来说,用组合或继承也是可以实现一个简单的代理的,所以为什么要强调要实现共同的接口呢?
如下:

public class Subject {
    public void f(){
        System.out.println("被代理对象的业务方法");
    }
}


public class ProxyItem {

    public void ff(){
        System.out.println("代理对象替被代理对象办事前");
        Subject sub = new Subject();
        sub.f();
        System.out.println("代理对象替被代理对象办事后");
    }
}


public class Test {
    public static void main(String[] args) {
        ProxyItem pi = new ProxyItem();
        pi.ff();
    }
}

请大佬指点指点。

lukely的主页 lukely | 初学一级 | 园豆:147
提问于:2021-10-31 13:48
< >
分享
所有回答(1)
0

你写错了,你的代码不是 静态代理。
你的代码,既没有继承,也没有组合。
去翻翻书吧。看看什么是 面向接口编程。

快乐的凡人721 | 园豆:3918 (老鸟四级) | 2021-10-31 14:07

我没有用继承,组合把new的语句放到外面就是,我的疑问是,为什么非得要实现接口?

支持(0) 反对(0) lukely | 园豆:147 (初学一级) | 2021-10-31 16:37

@lukely:
假设你写100个不同功能的代理,使用 接口方便呢,还是 复制 100遍被代理对象 需要被代理的方法?
有接口,IDE可以一键生成接口的方法,,而类不行。
假设几口有100个方法,那么……

支持(0) 反对(0) 快乐的凡人721 | 园豆:3918 (老鸟四级) | 2021-10-31 17:01

@快乐的凡人721: 你说得对,刚才就我这段代码,被问了一个问题,“难道调用别的方法就是代理了吗?”被问楞了,看来我的从新理解一下代理在编程领域的的代理究竟是什么概念。太多博客总用中介租房这种生活例子来比喻了,虽然生动形象,但是移植到编程领域,还是有些区别。

支持(0) 反对(0) lukely | 园豆:147 (初学一级) | 2021-10-31 17:45

@lukely:
看书吧,《疯狂Java讲义》、《Java编程的逻辑》,都挺不错的(厚)

支持(0) 反对(0) 快乐的凡人721 | 园豆:3918 (老鸟四级) | 2021-10-31 21:00
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册