JAVA設計模式-代理模式
一、介紹
代理模式是一種結構型模式,它指的是給某一個物件提供一個代理物件,并且由代理物件控制原有物件的參考,可以增強原有物件的功能以及降低系統的耦合度,生活中例如某品牌的代理商,我們買東西通過代理商購買,不是和廠家直接購買,代理模式有靜態代理和動態代理,例如,我們使用執行緒時實作的Runnable介面是使用的靜態代理,Spring中的AOP是使用的的動態代理,
二、相關角色
- Subject: 抽象角色,一般是使用的是介面或者抽象類,里面定義了代理物件和被代理物件共同的介面,
- Porxy: 代理物件,會實作或者繼承抽象角色,并且會實作抽象角色中的介面,還會包含對被代理物件的參考,其中在實作抽象角色中介面時,可以增加其他操作,增強功能,
- RealSubject: 真實物件,也就是被代理的物件,該物件也會實作抽象角色中的介面,
- Client:客戶端,呼叫代理物件,
三、類圖

四、代碼實作
我們就使用空調代理商來簡單說明并實作代理模式,首先廠家是可以直接拿貨售賣空調,代理商也是可以售賣空調,但是代理商售賣空調,有優惠、可以打折,售賣之后,包安裝等,代理商售賣空調也是從廠家拿貨售賣空調,
Subject
/**
* All rights Reserved, Designed By monkey.blog.xpyvip.top
*
* @version V1.0
* @Package com.xpyvip.designpattern.proxy
* @Description: 抽象介面
* @Author: xpy
* @Date: Created in 2022年10月15日 9:38 下午
*/
public interface Subject {
/**
* 售賣空調操作
*/
void action();
}
RealSubject
/**
* All rights Reserved, Designed By monkey.blog.xpyvip.top
*
* @version V1.0
* @Package com.xpyvip.designpattern.proxy
* @Description: 真實物件
* @Author: xpy
* @Date: Created in 2022年10月15日 9:42 下午
*/
public class RealSubject implements Subject{
/**
* 模擬空調廠家售賣
*/
public void action() {
System.out.println("廠家拿貨,進行售賣");
}
}
ProxySubject
/**
* All rights Reserved, Designed By monkey.blog.xpyvip.top
*
* @version V1.0
* @Package com.xpyvip.designpattern.proxy
* @Description: 代理物件
* @Author: xpy
* @Date: Created in 2022年10月15日 9:44 下午
*/
public class ProxySubject implements Subject{
/**
* 廠家,被代理物件
*/
private RealSubject realSubject;
public ProxySubject() {
System.out.println("這個是代理類,空調代理商");
this.realSubject = new RealSubject();
}
/**
* 售賣空調
*/
public void action() {
// 增強功能
// 售賣空調前操作
System.out.println("談價格、給優惠、打折,,,");
// 廠家拿貨,售賣空調
this.realSubject.action();
// 售賣空調后操作
System.out.println("包安裝、售后");
}
}
Client
/**
* All rights Reserved, Designed By monkey.blog.xpyvip.top
*
* @version V1.0
* @Package com.xpyvip.designpattern.proxy
* @Description: 客戶端
* @Author: xpy
* @Date: Created in 2022年10月15日 9:48 下午
*/
public class Client {
public static void main(String[] args) {
Subject subject = new ProxySubject();
subject.action();
}
}
原文鏈接:https://monkey.blog.xpyvip.top/archives/java-she-ji-mo-shi---dai-li-mo-shi
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/518508.html
標籤:其他
上一篇:day01-4-訂座功能
