案例是老师类,这个老师生病请假了,需要请另外一个老师临时帮忙,这个过来帮忙的老师就是代理对象,生病的老师就是被代理对象,其中我们需要代理对象和被代理对象都implement这个ITeacherDao接口,实现里面的tech方法
案例代码如下:
解释一下什么是聚合,就是A类里面有一个B类成员变量就是聚合了!
解释一下什么是依赖,就是A类里面调用了B类的东西,方法之类的,就是依赖了
图里面菱形箭头表示实现接口的方法,implement这个interface
package com.hmdp.service.尚硅谷的代理模式1;
interface ITeacherDao {void teach();
}
class TeacherDao implements ITeacherDao {public void teach(){System.out.println("老师授课中...");}
}
class TeacherDaoProxy implements ITeacherDao {private ITeacherDao target;//目标对象,通过接口来聚合public TeacherDaoProxy(ITeacherDao target){this.target = target;}public void teach(){System.out.println("代理开始...");target.teach();System.out.println("代理结束...");}
}
public class Main {public static void main(String[] args) {//创建目标对象,也是被代理对象TeacherDao teacherDao = new TeacherDao();
// 创建代理对象,同时把被代理对象传递给代理对象TeacherDaoProxy teacherDaoProxy = new TeacherDaoProxy(teacherDao);
// 通过代理对象,调用被代理对象的方法
// 执行的是代理对象的方法,代理对象再去调用被代理对象的方法teacherDaoProxy.teach();}
}