设计模式之静态代理
2010-08-16 20:16
281 查看
静态代理模式在我感觉就是为其他对象提供一种代理以控制对这个对象的访问.代理概念可以解释为:在出发点到目的地之间有一道中间层,
意为代理.
使用代理模式的时候,要求代理类和被代理的类有相同接口,在代理类中拥有一个被代理的类的对象,如下:
定义了一个接口moveable
package viekie.du.proxy;
public interface Moveable {
public void move();
}
汽车类实现Moveable接口
package viekie.du.proxy;
import java.util.Random;
public class Car implements Moveable{
@Override
public void move() {
System.out.println("car moving");
try {
Thread.sleep(new Random().nextInt(10000));
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
代理类CarTimeProxy 实现Moveable接口
package viekie.du.proxy;
public class CarTimeProxy implements Moveable{
Moveable m = null;
public CarTimeProxy(Moveable m) {
this.m = m;
}
@Override
public void move() {
long start = System.currentTimeMillis();
System.out.println("start time" + start);
m.move();
long end = System.currentTimeMillis();
System.out.println("end time" + end);
System.out.println("共用时间 : " + (end-start));
}
}
测试方法
package viekie.du.proxy;
public class Main {
public static void main(String[] args) {
Moveable m = new Car();
Moveable t = new CarTimeProxy(m);
t.move();
}
}
意为代理.
使用代理模式的时候,要求代理类和被代理的类有相同接口,在代理类中拥有一个被代理的类的对象,如下:
定义了一个接口moveable
package viekie.du.proxy;
public interface Moveable {
public void move();
}
汽车类实现Moveable接口
package viekie.du.proxy;
import java.util.Random;
public class Car implements Moveable{
@Override
public void move() {
System.out.println("car moving");
try {
Thread.sleep(new Random().nextInt(10000));
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
代理类CarTimeProxy 实现Moveable接口
package viekie.du.proxy;
public class CarTimeProxy implements Moveable{
Moveable m = null;
public CarTimeProxy(Moveable m) {
this.m = m;
}
@Override
public void move() {
long start = System.currentTimeMillis();
System.out.println("start time" + start);
m.move();
long end = System.currentTimeMillis();
System.out.println("end time" + end);
System.out.println("共用时间 : " + (end-start));
}
}
测试方法
package viekie.du.proxy;
public class Main {
public static void main(String[] args) {
Moveable m = new Car();
Moveable t = new CarTimeProxy(m);
t.move();
}
}
相关文章推荐
- java设计模式----静态代理
- 【设计模式之二:代理模式】代理模式(静态代理VS动态代理)
- JAVA设计模式之【代理模式】一(静态代理)
- 设计模式之三静态代理模式
- JAVA设计模式之静态代理
- 设计模式(一)--代理模式:动态代理与静态代理
- 静态代理模式-马士兵设计模式教程
- [转]转个经典的帖子:说故事学设计模式之-Java静态代理模式
- java 设计模式之单利模式以及代理模式(静态)
- 静态代理设计模式封装区块链签名jar包
- 设计模式之代理模式(静态代理)
- 设计模式之三静态代理模式
- 代理设计模式之静态代理与动态代理(超..)详解
- 设计模式------Java多线程之静态代理模式
- Java设计模式学习06——静态代理与动态代理
- java与设计模式(六)-静态代理
- 用过滤器和装饰者设计模式(静态代理)解决getParameter乱码问题
- 设计模式——静态代理模式
- 【GOF23设计模式】_代理模式_静态代理_动态代理_开发场景JAVA236-237
- 设计模式之代理模式(静态代理、JDK动态代理和cglib动态代理)