您的位置:

代理模式java,代理模式的优缺点

本文目录一览:

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 )