本文目錄一覽:
Java 代理模式和裝飾者模式的區別
您好!
代理模式與裝飾者模式看起來很像,都實現基礎對象實現的介面,在其自身對象中都保存著對被代理/被裝飾者的對象引用。
先來看看裝飾者模式的定義:動態的將責任附加到被裝飾者對象上,用於擴展對象的功能。比繼承的靈活性大。典型的如Java IO的設計即是裝飾者模式的典型應用。
代理模式模式的定義:對其他對象進行代理,以控制對被代理對象的訪問。Spring的為業務邏輯層方法生成的代理類,主要進行一些事務控制等。
由定義可以看出裝飾的責任是擴展功能 ,而代理主要控制訪問。
具體例子可參看Java IO裝飾/Spring的動態代理/Hibernate的代理等。
望採納
Java代理的作用和實現?
代理模式的作用是:為其他對象提供一種代理以控制對這個對象的訪問。在某些情況下,一個客戶不想或者不能直接引用另一個對象,而代理對象可以在客戶端和目標對象之間起到中介的作用。
java中的代理是什麼意思?
代理模式在設計模式中的定義就是:為其他對象提供一種代理以控制對這個對象的訪問。說白了就是,在一些情況下客戶不想或者不能直接引用一個對象,而代理對象可以在客戶和目標對象之間起到中介作用,去掉客戶不能看到的內容和服務或者增添客戶需要的額外服務。
java怎麼用代理模式實現多窗口運行
本文實例形式詳述了java實現一個程序運行時的啟動窗口效果,如常用的microsoft word、 borland jbuilder 等,這樣的窗口稱為信息窗口。使用信息窗口的好處是可以使用戶在等待軟體主界面出現前的一段時間中得知軟體運行狀態。本例將演示如何來實現信息窗口,當打開程序時,信息窗口先顯示,並在窗口上倒計時,直到「waiting 0」時,關閉該窗口,顯示程序的主窗口。
該功能的主要實現方法如下:
一般來說,大多數的信息窗口是沒有標題欄的,因此信息窗口不能由繼承jframe 類來實現,一種簡單的做法是通過繼承jwindow 來實現(當然繼承window 類也可以,但一個原則是盡量使用swing 中的界面
類)。另外,本例用到java.awt 包中的mediatracker 類。使用該類的好處是可以更好地管理程序中要使用的圖片,同時還可以保證圖片和界面同時顯示,避免了窗口顯示後很久才顯示圖片的缺點。
具體操作步驟如下:
1.新建一個project,取名為jspleshwindowdemo,其他設置按默認值。
2.新建一個application ,取名為jspleshwindowdemo,主窗口取名為mainframe,主窗口標題取名為jspleshwindowdemo。
3.先來編寫信息窗口的代碼。新建一個新類spleshwindow.java,繼承java.swing.jwindow類。在spleshwindow 類中,定義新的屬性,代碼如下:
private string statusstr=null; //信息窗口中要顯示的信息
private image logoimg=null; //信息窗口中的顯示圖片
4.向構造方法中添加代碼,載入圖片並初始化窗體,實現代碼如下:
public spleshwindow(jframe owner) { //以jframe 對象為參數,可以是信息窗口和主窗口交互
super( owner );
// 載入圖片
logoimg=gettoolkit().getimage( classloader.getsystemresource(“images/splesh.jpg”) );
// 等待圖片載入完成
java.awt.mediatracker tracker=new java.awt.mediatracker( this ); //創建一個mediatracker 對象
tracker.addimage( logoimg , 0 ); //將圖片放入mediatracker 對象中,序號為0
try{ //等待直到圖片載入完成
tracker.waitforall();
}catch ( interruptedexception e ) {
e.printstacktrace();
}
// 設置信息窗體在屏幕上的顯示位置
setlocation( gettoolkit().getscreensize().width/2 – logoimg.getwidth(this)/2 , gettoolkit().getscreensize().height/2 –
logoimg.getheight(this)/2 );
setsize( logoimg.getwidth(this) , logoimg.getheight(this) ); // 設置窗口大小
}
5.編寫設置顯示信息的方法,代碼如下:
public void setstatus( string status ){
statusstr=status;
paint( getgraphics() ); // 重畫窗口來更新信息窗口中的顯示信息
}
6.重置paint()方法來繪製圖片和顯示信息的方法,代碼如下:
public void paint(graphics g) {
/**@todo override this java.awt.component method*/
super.paint(g);
//繪製圖片
if ( logoimg!=null )
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/235736.html