首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

七、代理模式

2012-08-22 
7、代理模式代理,顾名思义!日常生活中的代理商等,都是对代理的诠释!为其它对象提供一种代理以控制对这个对

7、代理模式
代理,顾名思义!
日常生活中的代理商等,都是对代理的诠释!

为其它对象提供一种代理以控制对这个对象的访问.
1,远程代理--也就是为一个对象在不同的地址空间提供局部代表,这样可以隐藏一个对象存在于不同地址空间的事实.

2,虚拟代理--是根据需要创建开销很大的对象,通过它来存放实例化需要很长时间的真实对象.

3,安全代理--用来控制真实对象访问时的权限,一般用于对象应该有不同的访问权限的时候.

4,智能指引--是指当调用真实对象时,代理处理另外一些事.

现在一个例子来分析!!
漂亮女孩实体

public class BeautifulGirl {private String name;private char sex;public String getName() {return name;}public void setName(String name) {this.name = name;}public char getSex() {return sex;}public void setSex(char sex) {this.sex = sex;}}

接口类(一组行为)
public interface GiveGift {//送洋娃娃void GiveDolls();//送花void GiveFlowers();//送巧克力void GiveChocolate();}

一个男孩Jason他拥有一些行为
public class Jason implements GiveGift {private BeautifulGirl girl;public Jason(){}public Jason(BeautifulGirl bgirl){this.girl = bgirl;}@Overridepublic void GiveChocolate() {System.out.println("Jason送巧克力给"+this.girl.getName());}@Overridepublic void GiveDolls() {System.out.println("Jason送洋娃娃给"+this.girl.getName());}@Overridepublic void GiveFlowers() {System.out.println("Jason送花给"+this.girl.getName());}}

另外一个男孩Jack,他也拥有一些行为,他要去帮Jason去送花等!但他自己也有一些特别的行为
public class Jack implements GiveGift {public Jason jason;public Jack(){}public Jack(BeautifulGirl girl){this.jason = new Jason(girl);}@Overridepublic void GiveChocolate() {System.out.println("Jack-GiveChocolate()进入");jason.GiveChocolate();}@Overridepublic void GiveDolls() {System.out.println("Jack-GiveDolls()进入");jason.GiveDolls();}@Overridepublic void GiveFlowers() {System.out.println("Jack-GiveFlowers()进入");jason.GiveFlowers();}public void GiveCoffee(){System.out.println("Jack主动送咖啡");}}


测试:
public class Test {public static void main(String[] args) {BeautifulGirl girl = new BeautifulGirl();girl.setName("Tina");Jack man = new Jack(girl);man.GiveCoffee();man.GiveChocolate();man.GiveDolls();man.GiveFlowers();}}

输出:
Jack主动送咖啡Jack-GiveChocolate()进入
Jason送巧克力给Tina
Jack-GiveDolls()进入
Jason送洋娃娃给Tina
Jack-GiveFlowers()进入
Jason送花给Tina

第一次送咖啡是Jack代表自己送给Tina的.
后面三次同样是Jack去送,但代表的不是自己而是Jason

看懂了吗?继续加油

热点排行