您好,登錄后才能下訂單哦!
代理模式(Proxy Pattern)是一種設(shè)計(jì)模式,它提供了一種方式,通過引入一個(gè)代理類來控制對(duì)另一個(gè)對(duì)象(即真實(shí)對(duì)象)的訪問。這種模式可以用于增強(qiáng)Java類的功能,例如添加日志記錄、性能監(jiān)控、權(quán)限控制等。
以下是一個(gè)簡單的代理模式示例,演示了如何通過代理類增強(qiáng)Java類的功能:
// 定義接口
public interface Image {
void display();
}
// 真實(shí)對(duì)象
public class RealImage implements Image {
private String filename;
public RealImage(String filename) {
this.filename = filename;
loadFromDisk(filename);
}
private void loadFromDisk(String filename) {
System.out.println("Loading " + filename);
}
@Override
public void display() {
System.out.println("Displaying " + filename);
}
}
// 代理類
public class ProxyImage implements Image {
private RealImage realImage;
private String filename;
public ProxyImage(String filename) {
this.filename = filename;
}
@Override
public void display() {
if (realImage == null) {
realImage = new RealImage(filename);
}
System.out.println("Proxy: Preparing to display " + filename);
realImage.display();
}
}
// 測(cè)試類
public class ProxyPatternDemo {
public static void main(String[] args) {
Image image = new ProxyImage("test.jpg");
image.display();
image.display();
}
}
在這個(gè)示例中,我們定義了一個(gè)Image
接口,它包含一個(gè)display()
方法。然后,我們創(chuàng)建了一個(gè)真實(shí)對(duì)象RealImage
,它實(shí)現(xiàn)了Image
接口,并在構(gòu)造函數(shù)中加載圖像文件。接下來,我們創(chuàng)建了一個(gè)代理類ProxyImage
,它也實(shí)現(xiàn)了Image
接口,并在display()
方法中添加了額外的邏輯。當(dāng)調(diào)用ProxyImage
的display()
方法時(shí),如果RealImage
對(duì)象尚未創(chuàng)建,則會(huì)創(chuàng)建一個(gè)新的RealImage
對(duì)象。最后,在ProxyPatternDemo
類中,我們測(cè)試了代理模式的效果。
通過使用代理模式,我們可以在不修改真實(shí)對(duì)象代碼的情況下,為其添加額外的功能。這在許多場(chǎng)景中都非常有用,例如日志記錄、性能監(jiān)控、權(quán)限控制等。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。