关闭

代理模式

53人阅读 评论(0) 收藏 举报
分类:

代理,就是一个人或者一个机构代表另一个人或者另一个机构采取行动。在一些情况下,一个客户不想或者不能够直接引用一个对象,而代理对象可以在客户端和目标对象之前起到中介的作用。

代理模式给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用。

生活中的例子:过年加班比较忙,没空去买飞机票,这时可以打个电话到附近的票务中心,叫他们帮你买张回家的飞机票,当然这会附加额外的劳务费。但要清楚票务中心自己并不卖票,只有航站才真正卖票,票务中心卖给你的票其实是通过航站实现的。这点很重要!

上面这个例子,你就是“客户”,票务中心就是“代理角色”,航站是“真实角色”,卖票称为“抽象角色”!

新建接口(定义一个行为。)

public infeface maipiao{

public void maipiao();

}

新建类(买票需求人)

public class Person implements maipiao{

@Override
public void maipiao(){
    this.sayCondition();//加一些条件。。然后在发出买票的请求
    System.out.println("我是客户买张飞机票。。....");
}

public void sayCondition(){
    System.out.println("时间2016-9-1 上海到广州");
}

public void fuqian(){
    System.out.println("你好。正在转账。。。请注意查收");
}

}

新建代理 类

public class Proxy implements maipiao{
private maipiao mp;

@Override
public void maipiao{

    this.mp.maipiao();//得到买票的请求
    this.zhifubao();//买票之前收取费用
    this.mp.fuqian();//付钱
    this.maidaopiao();//买到票以后


}

//告知代理人。是哪个人需要买票。
public Proxy(maipiao mp){
    this.mp = mp;
}
public void maidaopiao(){
    System.out.println("已经买到票。邮寄到***.请注意查收。欢迎下次找我买");
}

public void zhifubao(){
    System.out.println("我是代理人A。先把钱支付宝。地址给我。我帮你买");
}

}

新建测试类

public class Test{

public static void main(String[] args){
    maipiao mp=null;
    mp=new Proxy(new Person());
    mp.maipiao();
}

}

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:889次
    • 积分:48
    • 等级:
    • 排名:千里之外
    • 原创:4篇
    • 转载:1篇
    • 译文:0篇
    • 评论:0条
    文章分类
    文章存档