Java23种设计模式
动态生成一个子类, 然后子类覆盖代理类中的方法。
代理模式的特点:
- 代理者和被代理者有共同的方法
- 代理者持有被代理者对象
需求:小孩子犯错误了,会通知监护人,小孩也同时受到惩罚。
- 创建代理接口,里面有一个共同的事件接受惩罚。
public interface Agent {
void punish();
}
- 创建孩子类,里面有一个事件是接受惩罚。
public class Child implements Agent{
@Override
public void punish() {
System.out.print("孩子受到了惩罚!\n");
}
}
- 创建大人类,里面持有孩子对象,收到惩罚通知之后会对孩子进行教育。
public class Adult implements Agent {
private Child child ;
@Override
public void punish() {
System.out.print("大人收到了消息!\n");
if(child == null) child = new Child();
child.punish();
}
}
- 创建代理类,并且进行处罚
public class Test {
public static void main(String[] args) {
Agent agent = new Adult();
agent.punish();
}
}
打印结果
大人收到了消息!
孩子受到了惩罚!