学校介绍

蓝鸥是一家集产、学、研、创为一体的综合性移动互联网研发培训机构,致力于iOS开发、Unity3D游戏开发、Android开发、HTML5前端开发和Web安全攻防等软件人才的培养。蓝鸥强大的师资阵容,纯净的教育理念,严格的管理制度,使其成为了美国苹果公司AATC认证官方授权培训中心、.. 招生资质: 未认证
学校优势: 关注移动互联网,专注ios技术与培训、HTML5技术、前端开发技术的分享和人才培养及拥有自主研发产品的IT科技公司
咨询电话: 021-37629222
分享到:
蓝鸥介绍Java语言中代理模式简介(一)
2017/7/31 18:18:18 来源:蓝鸥科技有限公司上海分公司 [加入收藏]

介绍Java语言中代理模式简介(一),详细看蓝鸥上海Java培训的分享。

1 代理的作用

代理模式是常用的Java设计模式,它的特征是代理类与委托类有同样的接口,代理类主要负责为委托类预处理消息、过滤消息、把消息转发给委托类,以及事后处理消息等。代理类与委托类之间通常会存在关联关系,一个代理类的对象与一个委托类的对象关联,代理类的对象本身并不真正实现服务,而是通过调用委托类的对象的相关方法,来提供特定的服务。

2 代理模式的例子

假设有一个Italk接口,有空的方法talk(说话),所有的Person对象都实现(implements)这个接口,实现talk方法,程序有很多地方都将Person实例化,执行talk方法,后来发现程序里有一些除了要说话以外还要唱歌(sing),那么我们既不能在Italk接口里增加sing()方法,又不能在每个Person对象都增加sing方法,我们只有增加一个代理类TalkProxy,这个代理类里实现talk和sing方法,然后在需要sing方法的地方调用代理类即可,代码如下:

2.1 接口类Italk

public interface Italk

{

public void talk(String msg);

}

2.2 委托类Person

public class Person implements Italk

{

public String name;

public String age;

public Person(String name, String age)

{

this.name = name;

this.age = age;

}

public void talk(String msg)

{

System.out.println(msg + "! 大家好, 我是 " + name + ", 我年龄是 " + age);

}

}

2.3 代理类TalkProxy

public class TalkProxy implements Italk

{

private Italk talker;

public TalkProxy(Italk talker)

{

this.talker = talker;

}

public void talk(String msg)

{

talker.talk(msg);

}

public void talk(String msg, String singname)

{

talker.talk(msg);

sing(singname);

}

private void sing(String singname)

{

System.out.println("歌的名字是:" + singname);

}

}

2.4 测试类:

public class Test

{

public static void main(String[] args)

{

Italk person = new Person("张三", "20");

person.talk("hi");

System.err.println(">>>>>>>>>>>>>>>");

TalkProxy talker = new TalkProxy(person);

talker.talk("hi", "<<歌唱祖国>>");

}

}

2.5 代码分析

代理分为静态代理和动态代理,上面的例子是静态代理,后面的文章我会再写一下关于动态代理,以及使用ASM生成代理类的例子。

蓝鸥培训http://sh.lanou3g.com/致力于Java培训,大数据培训,HTML5前端培训,VR游戏开发培训等IT培训课程 ,现所有课程可申请免费试听两周,试听期间不收费,选择蓝鸥,不止高薪更是高起点!

详情咨询:021-37652263,15800649059(沈老师) QQ:2161519036

我要发表评论