代理模式
1.代理模式的作用:代理模式主要为一个对象引用另外一个对象提供一种中介,简单的来说,有时候一个对象不想直接访问另外一个对象,这个时候就可以用代理来实现。
一般情况下代理模式需要三个角色
a.抽象角色:主要用来声明代理类和真实类的共同接口。代理类和真实类都需要实现该接口。
b.真实角色:也就是我们需要引用的那个类。
c.代理角色:代理角色内部包含对真实角色的引用,从而使客户端可以操作真实的对象,同时代理角色和真实角色拥有相同的接口以便任何时候都能替代真实对象。同时还可以附加另外的操作。
下面我们将以具体的代码来说明:
package com;
public abstract class Subject {
/**
* 如果一个类继承了抽象类,
* 这个类必须实现抽象类的所有方法
*/
//抽象方法
abstract public void request();
}
public abstract class Subject {
/**
* 如果一个类继承了抽象类,
* 这个类必须实现抽象类的所有方法
*/
//抽象方法
abstract public void request();
}
注意:这是一个抽象的类 ,下面编写代理的类
package com;
public class ProxySubject extends Subject{
RealSubject realSubject;
public void request(){
System.out.println("the programe is here");
if(realSubject==null){
realSubject=new RealSubject();
realSubject.request();
}
}
}
上面是一个代理的类,从这个类中,我们可以看出,代理的类实现了对真正类的引用
public class RealSubject extends Subject {
public void request(){
System.out.println("Real subject is here");
}
}
上面是一个真正引用的类。
下面编写一个客户端,来调用代理的类,实现对真正的类的操作
public class Client {
public static void main(String args[]){
Subject sub=new ProxySubject();
sub.request();
}
}
上面就是一个简单的代理模式。这是java设计模式中的一个例子,上面只是我对代理模式的理解