package com.pln;//总结:真实对象和代理对象要实现同一个接口//代理对象是要代理真实角色//好处:代理对象可以做真是对象做不了的事情//真实对象专注做自己的事情public class StaticProxy {public static void main(String[] args) {You you = new You();new Thread(()-> System.out.println("我气你")).start();WeddingComponent weddingComponent = new WeddingComponent(you);weddingComponent.HappyMarry();}}//接口interface Marry{void HappyMarry();}//真是角色:去结婚class You implements Marry{@Overridepublic void HappyMarry() {System.out.println("要结婚了,真开心");}}//代理角色:婚庆公司class WeddingComponent implements Marry{//创建一个真是角色private Marry target;public WeddingComponent(Marry target){this.target = target;}@Overridepublic void HappyMarry() {before();this.target.HappyMarry();//真是对象方法after();}private void after() {System.out.println("收取费用");}private void before() {System.out.println("计算费用");}}
运行结果:
