代理模式:
某一个 对象 提供一个 代理对象 ,并由 代理对象 控制对 源对象 的引用。代理就是一个人或一个机构代表另一个或者一个机构采取行动。某些情况下,客户不想或者不能够直接引用一个对象,代理对象可以在客户和目标对象中起 中介的作用。客户端分辨不出代理主题对象与真实主题对象。(客户分辨不出对象的真正所有者是谁)代理模式 可以并不知道真正的 被代理对象,被代理对象必须有系统的其他角色代为创建并传入。
代理模式一般涉及到三个角色:
抽象角色:
代理角色:
真正角色:
代理模式instance:
抽象角色: 作为唯一一个购买的对象 RealEstate...
package Agency;
/**
* 抽象出房地产的公共属性
* 便于Developer进行开发和设计
*/
public interface RealEstate {
public int realEstate();
}
开发商:有了RealEstate这个抽象的对象,开发商就可以去实现房地产的开发了,此时RealEstate就有了Developer的特点;房子在哪里 房子的价格等;
package Agency;
public class Developer implements RealEstate {
/**
* 实现接口RealEstate
* Developer设计自己的房子
*/
public int realEstate() {
System.out.println("Empire Garden Two,DongHu,Wuhan:Opening Celebration June 23,2011");
return 3000;
}
}
开发商要寻找代理来卖他的房子,这时候出现了代理,代理要实现RealEstate接口,才能才能在自己的基础上去对房子进行自己的定位。同时因为代理是买的开发商的房子,所以代理也要将开发商的东西搞过来,这里这里听过构造方法,和实力话一个房子来实现;
package Agency;
public class PorxySeller implements RealEstate {
/**
* @parameter RealEstate
*/
RealEstate one;
public PorxySeller(RealEstate one){
this.one=one;
}
public int realEstate() {
System.out.println("You sould pay more for this property");
return one.realEstate()+200;
}
}
最后就是客人了,客人首先的看中一个房子 用RealEstate r=new Developer();来实例化出一个,客人还需要一个代理,PorxySeller seller=new PorxySeller(r);通过R将代理和房子联系起来了...
package Agency;
public class Client1 {
public static void main(String[] args) {
RealEstate r=new Developer();
PorxySeller seller=new PorxySeller(r);
System.out.println(seller.realEstate());
}
}
输出结果:
You sould pay more for this property
Empire Garden Two,DongHu,Wuhan:Opening Celebration June 23,2011
3200

本文详细解释了代理模式的概念,并通过一个房地产开发的例子展示了如何在实际场景中运用代理模式。代理模式允许一个对象代表另一个对象,增强系统的灵活性和安全性。通过引入代理,客户可以间接操作目标对象,而无需直接与其交互。本文还具体说明了代理模式在不同角色(抽象角色、代理角色、真正角色)之间的分配和职责,以及如何在代码中实现这一模式。
168万+

被折叠的 条评论
为什么被折叠?



