Java 之代理模式
代理模式
代理模式的作用: 为其他对象提供一种代理以控制对这个对象的访问,在某些情况下,一个客户不想或者不能直接引用另一个对象,
而代理对象可以在客户端和目标对象之间起到 中介 的作用
举一个例子: 某一个人想请一个局长为他办一些事情,这个人可能不能直接去这个局长,因为局长不认识他,即使客户给他送礼或一些钱,局长也不会收,这时候怎么办?客户可以先去找局长的秘书或身边红人,局长秘书当然啦,跟局长比较密切,
这个客户他认识这个秘书,他通过秘书,告诉这个秘书,我要想请局长办些什么事情由这个秘书去让局长去做这个事情,他呢,把一些送礼啊,礼品啊送给秘书,由秘书转交给局长局长收到秘书给他的礼物之后,他就可以为这个人办些事情,这时候秘书就相当于是中介。
抽象角色:想办事的人
代理角色:秘书
真实角色:局长,他具有完成所需要的功能
1.示例
主要实现代码,分 4 步:
第一步 抽象角色:
Subject.java
abstract public class Subject{ abstract public void request();}
第二步代理角色:
ProxySubject.java
public class ProxySubject{
private RealSubject realSubject; //以真实角色作为代理角色的属性
public ProxySubject(){}
public void request(){ //该方法封装了真实对象的request方法
preRequest();
if(realSubject == null)
{
realSubject = new RealSubject();
}
realSubject.request(); //此处执行真实对象的request方法,这句体现了代理思想
postRequest();
}
private void preRequest(){
System.out.println("hello");
}
private void postRequest(){
System.out.println("world");
}
}
第三步 真实角色
RealSubject.java
public class RealSubject{
public RealSubject(){}
public void request(){
System.out.println("from real request");
}
}
第四步 客户端调用:
Client.java
public class Client{
public static void main(String[] args){
Subject sub = new ProxySubject();
sub.
相关文档:
package com.yc.eap.util;
import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import org.apache.common ......
Java变量有两种数据类型,一是Primitive主数据类型,一是引用.
主数据类型包括:
Boolean、char、Byte、short、int、long、float、double
引用为:Dog d = new Dog();
d.bark. ......
结构模式(-)
Adapter(适配器)
将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。
Adapter分为2种:
类适配器和对象适配器。Adapter和Adaptee之间是is-a关系的时候,属于类适配器,Adapter和Adaptee之间是has-a关系的时候,属于对象适配器。 ......
java中字符串的编码解码问题
1.将字符串转换成byte数组再恢复:
byte[] getBytes(String charsetName)
String(byte[] bytes, String charsetName)
或getBytes()
String(byte[] bytes)
2.使用String sun.misc.BASE64Encode.encode(byte[] b)
byte[] String sun.misc.BASE64Decode.decodeBuffer(String str)
将字符 ......