日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

大话设计模式—代理模式

發布時間:2024/4/14 asp.net 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 大话设计模式—代理模式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在代理模式(Proxy Pattern)中,一個類代表另一個類的功能。這種類型的設計模式屬于結構型模式。我們創建具有現有對象的對象,以便向外界提供功能接口。

大話設計模式中程杰老師的給出的解釋是代理模式:為其他對象提供一種代理以控制對這個對象的訪問。

主要解決:在直接訪問對象時帶來的問題,比如說:要訪問的對象在遠程的機器上。在面向對象系統中,有些對象由于某些原因(比如對象創建開銷很大,或者某些操作需要安全控制,或者需要進程外的訪問),直接訪問會給使用者或者系統結構帶來很多麻煩,我們可以在訪問此對象時加上一個對此對象的訪問層。

代理模式結構圖如下:

以一個image的例子來看一下具體實現:

RealImage.java

public class RealImage implements Image {private String fileName;public RealImage(String fileName){this.fileName = fileName;loadFromDisk(fileName);}@Overridepublic void display() {System.out.println("Displaying " + fileName);}private void loadFromDisk(String fileName){System.out.println("Loading " + fileName);} }

ProxyImage.java

public class ProxyImage implements Image{private RealImage realImage;private String fileName;public ProxyImage(String fileName){this.fileName = fileName;}@Overridepublic void display() {if(realImage == null){realImage = new RealImage(fileName);}realImage.display();} }

ProxyPatternDemo.java

public class ProxyPatternDemo {public static void main(String[] args) {Image image = new ProxyImage("test_10mb.jpg");//圖像將從磁盤加載image.display(); System.out.println("");//圖像將無法從磁盤加載image.display(); } }

運行結果:

Loading test_10mb.jpg Displaying test_10mb.jpg Displaying test_10mb.jpg

第一次調用image.display()方法時,realImage不存在,程序會會實例化一個RealImage對象,RealImage的構造方法中調用了loadFromDisk()方法;當我們第二次調用image.display()方法時,realImage已經存在了,此時就不會在實例化RealImage對象,而是直直接調用display()方法。

代理模式的應用:

1、遠程代理:也就是為了一個對象在不同的地址空間提供局部代表。這樣可以隱藏一個對象存在于不同地址空間的事實(webservice的使用就是這個原理);

2、虛擬代理:根據需要創建開銷很大的對象,通過它來存放實例化需要很大代價的真實對象(如瀏覽器中用到的使用代理模式來優化下載,HTML加載文字和圖片時,未加載的圖片顯示的圖片框就是真實圖片的虛擬代理);

3、安全代理:用來控制真實對象訪問時的權限(一般用于對象有不同的訪問權限的時候)。

4、智能指引:當調用真實的對象時,代理處理另外一些事(如在訪問一個實際對象之前,檢查其是否已經被鎖定,以確保其他對象不能對他作出修改)。

注意事項:

1、和適配器模式的區別:適配器模式主要改變所考慮對象的接口,而代理模式不能改變所代理類的接口。

2、和裝飾器模式的區別:裝飾器模式為了增強功能,而代理模式是為了加以控制。

總結

以上是生活随笔為你收集整理的大话设计模式—代理模式的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。