以哥哥代替弟弟写作业为例
package com.company.staticproxy;
public class TestStaticProxy {
public static void main(String[] args) {
//弟弟为目标对象
ElderBrother elderBrother = new ElderBrother(new YoungerBrother());
elderBrother.finishHomework();
System.out.println("=========================");
//也可以用lambda表达式
ElderBrother elderBrother2 = new ElderBrother(()-> System.out.println("弟弟完成自己的作业2"));
elderBrother2.finishHomework();
}
}
interface doHomework{
void finishHomework();
}
//弟弟
class YoungerBrother implements doHomework{
@Override
public void finishHomework() {
System.out.println("弟弟完成本周作业");
}
}
//哥哥,代理角色,帮助写作业
class ElderBrother implements doHomework{
private doHomework target;
public ElderBrother(doHomework target) {
this.target = target;
}
@Override
public void finishHomework() {
before();
target.finishHomework();
after();
}
private void before() {
System.out.println("哥哥帮弟弟检查上周的作业");
}
private void after() {
System.out.println("哥哥帮弟弟预习下周的知识");
}
}
结果:
哥哥帮弟弟检查上周的作业
弟弟完成本周作业
哥哥帮弟弟预习下周的知识
=========================
哥哥帮弟弟检查上周的作业
弟弟完成自己的作业2
哥哥帮弟弟预习下周的知识
网友评论