JAVA设计模式之---代理模式(一)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/mayong1234567/article/details/82989494

前言

今天学习了代理模式,尽管只是对静态代理有了一点理解,但还是非常开心的总结一下.

-. 静态代理
-. 继承代理
-. 聚合代理

继承代理

首先是要讲述的是继承代理 下面是我创建继承代理的过程,如下:
  1. 创建接口
package proxy.mayong.org;

public interface Moveable {
	
	void move();//这里定义一个方法
}
  1. 创建一个实现接口的类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();
		}
		
		
	}

}

  1. 创建 继承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,然后重写起方法,对其进行封装打包,,然后作为整体 可以传入其他的 代理中. 这样就实现了类似于嵌套的功能. 代码如下:
  1. 创建 公共接口.
package proxy.mayong.org;

public interface Moveable {
	
	void move();//这里定义一个方法
}
  1. 创建聚合代理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("日志结束");
	}

  1. 创建聚合代理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("开车结束...");
	}
  1. 测试类
		car c = new car();//创建一个新对象
		
		Moveable c4 = new car4(c);
		Moveable c3= new car3(c4);

		c3.move();
		

这样就构建了一个聚合的代理模式,在代理中,我们可以在原先的基础上,添加新的功能…

猜你喜欢

转载自blog.csdn.net/mayong1234567/article/details/82989494