`
wangqisen
  • 浏览: 46465 次
文章分类
社区版块
存档分类
最新评论

java代理模式

 
阅读更多

例如有一个接口叫做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());
	}
}


分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics