例如有一个接口叫做Talk,所有的People类都实现了这个接口。如下:
package test;
interface Talk{
public void talk(String s);
}
class People1 implements Talk{
public void talk(String s) {
System.out.println(s);
}
}
class People2 implements Talk{
public void talk(String s) {
System.out.println(s+"different from people1");
}
}
每一个people都可以说不同的话,但是,如果想要这个时候去给所有的人加一个唱歌的方法sing(),如果通过给接口加一个sing(),同时,在所有的people中都去加一个sing,是不现实的,太复杂。而且,大多数情况下,并不希望改变程序架构。这个时候,可以写一个代理类SingProxy,来实现这个要求。
class SingProxy implements Talk{
public Talk talker;
public SingProxy(Talk talker){
this.talker=talker;
}
@Override
public void talk(String s) {
// TODO Auto-generated method stub
talker.talk(s);
}
public void sing(){
System.out.print("singing:"+talker.getClass().getSimpleName());
}
}
分享到:
相关推荐
自己总结的代理模式和Java中的动态代理模式,有源码
Java 代理模式 简单实现,这是用Java实现的Java代理模式,包括动态代理, 可以运行
Java代理模式 事例很生动,非常容易理解,推荐给大家。
java代理模式和动态代理
java代理模式test
JAVA设计模式之代理模式实例
Java代理模式模板代码,包含动态代理与静态代理。 静态代理使用了传统的代理类来代理,动态代理中使用了jdk的反射原理进行代理
16-Java代理模式的学习笔记1
对java代理模式有个详细而深入的讲解,从jdk api的角度来讲解的。。。
用java实现代理模式,使用房屋中介的现实例子进行代理模式的说明
Java代理模式.pdf
浅析JAVA代理模式.pdf
Java代理模式参照.pdf
分析Java代理模式的使用方式,和JDK内部动态代理的实现机制,演示如何自己去实现一个动态代理模式,有助于初学者对Java代理模式的理解和运用。
Java设计模式——代理设计模式(静态代理和动态代理) 各种情况例子源码
代理模式的定义:为其他对象提供一种代理以控制对这个对象的访问。