静态代理
什么是代理,类似于现在生活中的中介或者说是销售
行业,他们有出租或者出售的能力,但是出租出售的
东西本身不是他们的属性,他们只是有这种功能但是
需要物品主人提供物品给他们,让他们去销售。
静态代理,为了代理对象的功能更加纯粹(重复的工
作交给代理去做,被代理的对象只是实现业务)。
以销售为例子做一个静态代理。
提供一个接口和业务方法的抽象方法。
package com.hist.LL.proxy;
public interface Sell {
String sell();
}
---------------------------------------------------------
/**
* 物品替换供者
*/
这个是物品提供者,不可或缺的一部分,这个是代理
要代理的对象。
package com.hist.LL.proxy;
public class ObjectServer implements Sell {
@Override
public String sell() {
System.out.println("有东西出售");
return "物主";
}
}
-------------------------------------------------------------------------
这一部分是代理,代理,代理要有和物主一样拥有
销售的能力,所以说要实现拥有销售方法的接口。
package com.hist.LL.proxy;
public class Seller implements Sell {
private ObjectServer objectServer;
public ObjectServer getObjectServer() {
return objectServer;
}
public void setObjectServer(ObjectServer objectServer) {
this.objectServer = objectServer;
}
@Override
public String sell() {
System.out.print("我是销售");
String sell = objectServer.sell();
System.out.println(sell + "同意了。");
return "代理";
}
}
-------------------------------------------------------------------------
买东西,要形成买卖关系,有人卖东西,还得有人
买东西才能形成这种关系,所以说,必须得购物者
这样可以从代理那买,也可以从物主那买。这样如
果说是对DAO层的操作的话,就可以让DAO层只做add,
delete,update,insert之类的操作,那些个无意义
输出或者日志记录交给代理去做。
package com.hist.LL.proxy;
public class Buyer {
public String buy() {
ObjectServer objectServer = new ObjectServer();
Seller seller = new Seller();
seller.setObjectServer(objectServer);
String sell = seller.sell();
return sell;
}
public static void main(String[] args) {
Buyer buyer = new Buyer();
String buyfrom = buyer.buy();
System.out.println("从"+buyfrom+"买来的。。。");
}
}
-------------------------------------------------------------------------
但是静态代理一个服务类对应一个代理,代码量并
没有减少,但是它更专业化,优缺点自己衡量是否
使用静态代理。