輕松控制Java署理形式。本站提示廣大學習愛好者:(輕松控制Java署理形式)文章只能為提供參考,不一定能成為您想要的結果。以下是輕松控制Java署理形式正文
界說:為其他對象供給一種署理以掌握對這個對象的拜訪。在某些情形下,一個對象不合適或許不克不及直接援用另外一個對象,而署理對象可以在客戶端和目的對象之間起到中介的感化。
特色:
1、真實的腳色就是完成現實的營業邏輯,不消關懷其他非本職責的事務,經由過程前期的署理完成一件完成事務,附帶的成果就是編程簡練清楚。
2、署理對象可以在客戶端和目的對象之間起到中介的感化,如許起到了中介的感化和掩護了目的對象的感化。
3、擴大性高
企業級開辟和經常使用框架中的運用:最有名的就是spring的aop,還有spring的bean的創立其實也用到了署理
署理形式分為了靜態署理和靜態署理,靜態署理是開辟中運用的特殊多。
靜態署理:
/**
* 以買房舉例
*/
interface Actions {
/**
* 選房
*/
public void selectHouse();
/**
* 看房
*/
public void seeHouse();
/**
* 入住
*/
public void ruzhu();
}
class RealRole implements Actions{
public void selectHouse() {
System.out.println("用戶本身選房");
}
public void seeHouse() {
System.out.println("用戶本身看房");
}
public void ruzhu() {
System.out.println("用戶本身入住");
}
}
class ProxyRole implements Actions{
private RealRole realRole;
public ProxyRole(RealRole realRole) {
this.realRole = realRole;
}
public void selectHouse() {
System.out.println("中介選房");
}
public void seeHouse() {
System.out.println("中介看房");
}
@Override
public void ruzhu() {
realRole.ruzhu();
}
}
public class Demo {
public static void main(String[] args) {
RealRole realRole = new RealRole();
ProxyRole proxyRole = new ProxyRole(realRole);
proxyRole.selectHouse();
proxyRole.seeHouse();
proxyRole.ruzhu();
}
}
靜態署理:
/**
* 以買房舉例
*/
interface Actions {
/**
* 選房
*/
public void selectHouse();
/**
* 看房
*/
public void seeHouse();
/**
* 入住
*/
public void ruzhu();
}
class RealRole implements Actions{
public void selectHouse() {
System.out.println("用戶本身選房");
}
public void seeHouse() {
System.out.println("用戶本身看房");
}
public void ruzhu() {
System.out.println("用戶本身入住");
}
}
class Handler implements InvocationHandler{
private RealRole realRole ;
public Handler(RealRole realRole) {
this.realRole = realRole;
}
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
System.out.println(realRole);
System.out.println("中介選房,看房");
method.invoke(realRole, args);
return null;
}
}
public class Demo {
public static void main(String[] args) {
RealRole realRole = new RealRole();
Handler handler = new Handler(realRole);
Actions proxy = (Actions) Proxy.newProxyInstance(ClassLoader.getSystemClassLoader(), new Class[]{Actions.class}, handler);
proxy.ruzhu();
}
}
以上就是本文的全體內容,願望對年夜家的進修有所贊助,也願望年夜家多多支撐。