1. 代理模式
代理模式的作用是:为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个客户不想或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。
代理模式一般涉及到三个角色:
抽象角色:声明真实对象和代理对象的共同接口;
代理角色:代理对象角色内部含有对真实对象的引用,从而可以操作真实对象,同时代理对象提供与真实对象相同的接口以便在任何时刻都能代替真实对象。同时,代理对象可以在执行真实对象操作时,附加其他的操作,相当于对真实对象进行封装。
真实角色:代理角色所代表的真实对象,是我们最终要引用的对象。
第一步:定义一个Italk接口
package com.proxy2;
/**
* 接口
* @author 黑马_王康
*
*/
public interface ITalk {
public void talk(String msg);
}
第二步:定义人类实现Itqalk接口
package com.proxy2;
/**
* People类实现ITalk接口
* @author 黑马_王康
*
*/
public class People implements ITalk{
public String userName;
public String age;
public People(String userName, String age){
this.userName = userName;
this.age = age;
}
public String getUserName(){
return userName;
}
public void setUserName(String userName){
this.userName = userName;
}
public String getAge(){
return age;
}
public void setAge(String age){
this.age = age;
}
@Override
public void talk(String msg) {
System.out.println(msg+"您好,我是"+userName+",我今年"+age+"岁.");
}
}
第三步:写代理类,注入Italk接口
package com.proxy2;
/**
* 代理类
* @author 黑马_王康
*
*/
public class TalkProxy implements ITalk{
ITalk talker;
public TalkProxy(ITalk talker){
this.talker = talker;
}
@Override
public void talk(String msg) {
talker.talk(msg);
}
public void talk(String msg, String singleName){
talker.talk(msg);
sing(singleName);
}
public void sing(String singleName){
System.out.println("唱歌:"+singleName);
}
}
第四步:编写代理类测试类
package com.proxy2;
/**
* 代理测试类
* @author 黑马_王康
*
*/
public class MyProxyText2 {
public static void main(String[] args) {
ITalk people = new People("幽静清风朗月", "24");
people.talk("No ProXY Test");
System.out.println("------------------------------------");
ITalk people2 = new People("王康", "25");
TalkProxy talker = new TalkProxy(people2);
talker.talk("ProXY Test", "一起走过的日子");
}
}
运行结果:
No ProXY Test您好,我是幽静清风朗月,我今年24岁.
------------------------------------
ProXY Test您好,我是王康,我今年25岁.
唱歌:一起走过的日子
黑马程序员_王康 java代理
最新推荐文章于 2012-02-29 14:30:44 发布