版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/mayong1234567/article/details/82989494
前言
今天学习了代理模式,尽管只是对静态代理有了一点理解,但还是非常开心的总结一下.-. 静态代理
-. 继承代理
-. 聚合代理
继承代理
首先是要讲述的是继承代理 下面是我创建继承代理的过程,如下:- 创建接口
package proxy.mayong.org;
public interface Moveable {
void move();//这里定义一个方法
}
- 创建一个实现接口的类car
package proxy.mayong.org;
import java.util.Random;
public class car implements Moveable {
@Override
public void move() {
//睡眠一会
try {//下面是睡眠一会,,也就是暂停一下.
Thread.sleep(new Random().nextInt(1000));//引入包 shift + ctrl + o
System.out.println("开车中....");
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
- 创建 继承car 的car2
public void move() {
// 实现了父类的方法.
long startTime = System.currentTimeMillis();
System.out.println("开车了.....");
super.move();
long endTime = System.currentTimeMillis();//以秒为单位来计数
System.out.println("结束开车....");
System.out.println("共耗时"+(endTime-startTime)+"毫秒");
}
}
这样,在测试类中,我们就可以创建car2的对象,然后调用move 方法.
聚合代理
(个人理解): 创建一个继承主类的类, 同时 在内部重新编写构造方法,传入一个car,然后重写起方法,对其进行封装打包,,然后作为整体 可以传入其他的 代理中. 这样就实现了类似于嵌套的功能. 代码如下:- 创建 公共接口.
package proxy.mayong.org;
public interface Moveable {
void move();//这里定义一个方法
}
- 创建聚合代理1(注意接口问题)
public car3(Moveable car) {
super();
this.car=car;
}
private Moveable car;
@Override
public void move() {
// TODO Auto-generated method stub
System.out.println("日志开始...");
car.move();
System.out.println("日志结束");
}
- 创建聚合代理2
public car4(Moveable car) {
super();
this.car=car;
}
private Moveable car;
@Override
public void move() {
// TODO Auto-generated method stub
System.out.println("发动汽车...");
car.move();
System.out.println("开车结束...");
}
- 测试类
car c = new car();//创建一个新对象
Moveable c4 = new car4(c);
Moveable c3= new car3(c4);
c3.move();
这样就构建了一个聚合的代理模式,在代理中,我们可以在原先的基础上,添加新的功能…