滿漢樓01-4 4.功能實現03 4.5訂座功能 4.5.1功能說明 如果該餐桌處於已經預定或者就餐狀態時,不能進行預定,並給出相應提示 4.5.2思路分析 根據顯示界面,要考慮以下兩種狀態 檢測餐桌是否存在 檢測餐桌的狀態 如果餐桌存在且狀態為空(即可以預定),在預定過後要修改餐桌狀態 4.5.3 ...
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