java代理模式
代理模式的作用是:为其他对象提供一种代理以控制对这个对象的访问。
在某些情况下,一个客户不想或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用
例如:客人想请市长(真是角色)吃饭 但是请不动市长 只好找市长秘书(代理角色) 但是最后为客人做事的 还是市长
代理模式一般涉及到的角色有
抽象角色:声明真实对象和代理对象的共同接口
代理角色:代理对象角色内部含有对真实对象的引用,从而可以操作真实对象,同时代理对象提供与真实对象相同的接口以便在任何时刻
都能代替真实对象。同时,代理对象可以在执行真实对象操作时,附加其他的操作,相当于对真实对象进行封装
真实角色:代理角色所代表的真实对象,是我们最终要引用的对象
参见程序Subject.java
参见程序RealSubject.java
参见程序ProxySubject.java
参见程序Client.java
// 抽象角色
abstract public class Subject
{
abstract public void request();
}
//真实角色:实现了Subject的request()方法
public class RealSubject extends Subject
{
public RealSubject()
{
}
public void request()
{
System.out.println("from real subject.");
}
}
//代理角色
public class ProxySubject extends Subject
{
private RealSubject realSubject; // 以真实角色作为代理角色的属性
public ProxySubject()
{
}
public void request() // 该方法封装了真实对象的request方法
{
preRequest();
if (realSubject == null)
{
realSubject = new RealSubject();
}
realSubject.request(); // 此处执行真实对象的request方法
postRequest();
}
private void preRequest()
{
// something you want to do before requesting
}
private void postRequest()
{
// something you want to do after requesting
}
}
//客户端调用
public class Client
{
public static void main(String[] args)
{
//这里用到了多态机制 因为ProxySubject继承了Subject 所以
Sub
相关文档:
构造器是为了创建一个类的实例。这个过程也可以在创建一个对象的时候用到:Platypus p1 = new Platypus();
相反,方法的作用是为了执行java代码。
修饰符,返回值和命名的不同
构造器和方法在下面三个方便的区别:修饰符,返回值,命名。和方法一样,构造器可以有任何访问的修饰: public, protected ......
import java.util.*;
public class stack
{
private List list=new ArrayList();
private int index=0;
public void push(Object obj)
& ......
最近,深刻的认识到, 学习,不仅要多看书,还要时不时的总结一下:
用JSP + Servlet + JavaBean开发项目, 原以为是比较糟糕的事, 因为,JSP 页面中 总会被嵌入很多 java代码,其实我一直觉得,既然有了 struts等表示层框架,就不要用Servlet 来做控制器了, 可是最近,明白了, 仔 ......
今年3月Amazon发布
了新的Java AWS
SDK
,旨在简化Amazon EC2上的Java应用开发。
Amazon EC2是个私有的Web Services,提供了云环境下的弹性计算能力。AWS SDK旨在简化网络规模(web-scale)下的计算。AWS Toolkit for
Eclipse
自动化了开发周期的大多数步骤,比如Amazon集群上的部署、调试、实例加载以及网 ......
浅析Java web程序之客户端和服务器端交互原理
近来一直在思考一个疑问,为什么在用struts框架开发的时候FormBean都须要序列化,即实现Java.io.Serializable接口,本着勤学好问的精神我Google了下对象序列化方面的文章,虽然大体明白了如何做,但是还是没有搞清楚为什么要这样做;结尾我想处理一个疑问要找疑问的根源和本质 ......