静态代理分为三部分:

抽象角色:抽象角色给继承自己的角色制定规则,是一个接口。

代理角色:代理角色是一个中间角色,丰富抽象角色制定的规则的内容,是一个类。

真实角色:真实角色是一个真正意思上的实施角色,抽象角色制定的规则都是由他去做,是一个类。

看抽象角色的代码:

package com.top;

public interface Action {
	//抽象角色,给子类定义规则。
	public void doAction(); 
	public void sayGood();
}

代理角色的代码:

package com.daili;

import com.real.Real;
import com.top.Action;

public class Daili implements  Action{
	
	private Real real = new Real();
	/*
	 * 	代理主要是中间作用,
	 * 抽象角色规定真实角色去做实际的事情,
	 * 代理角色则是作为一个中间角色来调节真实角色的行为,
	 * 来丰富抽象角色规定的方法。
	 * */
	public Daili(Real real) {  //给定一个关于真实角色的构造方法。
		this.real = real;
	}
	
	@Override
	public void doAction() {
		real.doAction();  //代理实现了real中的doAction方法
	}
	@Override
	public void sayGood() {
		real.sayGood(); //代理实现了real中的sayGood方法
		real.doAction();//这里还可以实现doAction,丰富了sayGood方法的内容!
	}
}

真实角色的代码:

package com.real;

import com.top.Action;

public class Real implements Action{
	@Override
	public void doAction() {
		System.out.println("实现了doAction方法!");
	}
	@Override
	public void sayGood() {
		System.out.println("实现了sayGood方法!");
	}

}

 

测试代码:

package com.test;

import com.daili.Daili;
import com.real.Real;

public class TestProxy {
	public static void main(String[] args) {
		Real real = new Real() ;  //创建真实角色,一切方法都是由真实角色去完成,所以需要。
		Daili daili = new Daili(real); //实现构造
		daili.doAction();  //完成代理
	}
}