实现静态代理, 静态代理模式总结
- 真实对象和代理对象都要实现同过一个接口
- 代理对象代理真实角色
好处:
- 代理对象可以做很多真是对象做不了的事情
- 真实对象可以专注做自己的事情
定义一个接口:
package Thread_demo7;
public interface FindWork {
void Work();
}
我和中介分别实现这个接口
我:FindWork_impl
package Thread_demo7;
//角色
public class FindWork_impl implements FindWork {
@Override
public void Work() {
activist();
System.out.println("工人上线了,我要当一名打工人");
}
public void activist(){
System.out.println("上岗之前,我还去旅游了几天");
}}
中介公司:
package Thread_demo7;
//代理角色
public class WorkProxyCompany implements FindWork {
private FindWork target;
//代理真实角色
public WorkProxyCompany(FindWork target) {
this.target = target;
}
@Override
public void Work() {
before();
company();
this.target.Work();
after();
}
private void company() {
System.out.println("联系公司,说招到工人了,准备安排入职");
}
private void after() {
System.out.println("6个月后,我离职了,工厂发我工资,且中介公司收取劳务费用"); }
private void before() {
System.out.println("中介公司收集我的信息");
}
}
package Thread_demo7;
public class StaticProxy {
public static void main(String[] args) {
// 将找工作实现(new FindWork_impl())交给中介公司WorkProxyCompany
new Thread(()->System.out.println("我要找工作")).start();
new WorkProxyCompany(new FindWork_impl()).Work();
}
}
实现效果: