静态代理是由程序员自己编码实现(工具自动生成),再编译成class文件。
组合方式代理:
//定义服务层业务接口
public interface Service {
//做事情
void doSamthing();
}
//目标对象
public class NongMinGong implements Service {
@Override
public void doSamthing() {
System.out.println("农民工在搬砖...");
}
}
//代理对象
public class Agent implements Service {
public Service target; //目标对象
//2.方法的形参设计为接口
public Agent(Service target) { //传入目标对象
this.target = target;
}
@Override
public void doSamthing() {
System.out.println("要求戴帽子...");
target.doSamthing();
//NongMinGong target= new NongMinGong();
System.out.println("统计数量发工资...");
}
}
public static void main(String[] args) {
Service service = new Agent(new NongMinGong());
service.doSamthing();
}
继承方式代理:
1 //定义服务层业务接口 2 public interface Service { 3 //做事情 4 void doSamthing(); 5 } 6 7 //目标对象 8 public class NongMinGong implements Service { 9 10 @Override 11 public void doSamthing() { 12 System.out.println("农民工在搬砖..."); 13 } 14 } 15 16 //代理对象 17 public class Agent implements NongMinGong { 18 @Override 19 public void doSamthing() { 20 System.out.println("要求戴帽子..."); 21 supper.doSamthing(); 22 System.out.println("统计数量发工资..."); 23 } 24 } 25 public static void main(String[] args) { 26 Service service = new Agent(); 27 service.doSamthing(); 28 }
结果:
要求戴帽子...
农民工在搬砖...
统计数量发工资...