1. package com.pln;
    2. //总结:真实对象和代理对象要实现同一个接口
    3. //代理对象是要代理真实角色
    4. //好处:代理对象可以做真是对象做不了的事情
    5. //真实对象专注做自己的事情
    6. public class StaticProxy {
    7. public static void main(String[] args) {
    8. You you = new You();
    9. new Thread(()-> System.out.println("我气你")).start();
    10. WeddingComponent weddingComponent = new WeddingComponent(you);
    11. weddingComponent.HappyMarry();
    12. }
    13. }
    14. //接口
    15. interface Marry{
    16. void HappyMarry();
    17. }
    18. //真是角色:去结婚
    19. class You implements Marry{
    20. @Override
    21. public void HappyMarry() {
    22. System.out.println("要结婚了,真开心");
    23. }
    24. }
    25. //代理角色:婚庆公司
    26. class WeddingComponent implements Marry{
    27. //创建一个真是角色
    28. private Marry target;
    29. public WeddingComponent(Marry target){
    30. this.target = target;
    31. }
    32. @Override
    33. public void HappyMarry() {
    34. before();
    35. this.target.HappyMarry();//真是对象方法
    36. after();
    37. }
    38. private void after() {
    39. System.out.println("收取费用");
    40. }
    41. private void before() {
    42. System.out.println("计算费用");
    43. }
    44. }

    运行结果:
    image.png