本來想寫動(dòng)態(tài)代理的,但是講動(dòng)態(tài)代理前先說說靜態(tài)代理吧求摇;
靜態(tài)代理對(duì)象的角色分析
抽象角色------一般用接口或者抽象類來實(shí)現(xiàn)
真實(shí)角色------被代理的角色
代理角色------代理真實(shí)角色-----代理真實(shí)角色后射沟,一般會(huì)做一些附屬的操作。
客戶 -------使用代理角色來進(jìn)行一些操作
//租房的抽象接口
public interface Rent {
public void rent();
}
//房東,被代理的真實(shí)角色
public class Host implements Rent{
public void rent(){
System.out.println("房東出租房屋");
}
}
//代理
public class Proxy {
private Host host;
public Proxy() {
}
public Proxy(Host host) {
super();
this.host = host;
}
// public void setHost(Host host) {
// this.host = host;
// }
//中介租房的方法
public void rent(){
seeHouse();
host.rent();
fare();
}
//看房
public void seeHouse(){
System.out.println("帶房客看房");
}
//收取中介費(fèi)
public void fare(){
System.out.println("收取一波中介費(fèi)");
}
}
//顧客
public class Client {
public static void main(String[] args) {
Host host = new Host();
Proxy proxy = new Proxy(host);
proxy.rent();
}
}
輸出結(jié)果:
帶房客看房
房東出租房屋
收取一波中介費(fèi)
優(yōu)點(diǎn):
1与境、使得真實(shí)角色處理的業(yè)務(wù)更加純粹验夯,不再去關(guān)注一些公共的事情;
2嚷辅、公共的業(yè)務(wù)由代理來完成 實(shí)現(xiàn)業(yè)務(wù)的分工
3簿姨、公共業(yè)務(wù)發(fā)生擴(kuò)展時(shí)變得更加集中和方便
實(shí)際開發(fā)過程中可以把service接口當(dāng)做抽象角色
serviceImpl當(dāng)做真實(shí)角色(執(zhí)行業(yè)務(wù)邏輯代碼)
代理類實(shí)現(xiàn)service接口去代理那些公共業(yè)務(wù)距误,比如日志簸搞;
缺點(diǎn):1、類多了-----多了代理類 工作量就變大了准潭,開發(fā)效率就降低了趁俊;
有了靜態(tài)代理的不足于是動(dòng)態(tài)代理就上場了;