个人理解的静态代理

/**
     * 作为吃货一枚,还是用吃的例子模拟静态代理吧,思路如下:
     * 下馆子无需知道具体菜怎么做的,客人只需点菜->动嘴->付款 即可
     * 1.定义动嘴吃接口eat
     * 2.我要动嘴吃(我实现eat接口)
     * 3.每个商家可接待多个用户,商家始终都会执行做菜&收款的动作,但用户怎么吃却千变万化,所以通过商家可以看到每个用户是怎么吃(偷)的(窥)
     */
    //动嘴吃
    public interface eat{
        void eat();
    }
    //每个用户都会吃
    public static class  people implements eat{
        String name="";
        public  people(String name){
            this.name=name;
        }
        @Override
        public void eat() {
            System.out.println(name+"开始吃ing....");
        }
    }
    //商家负责做,负责收款,唯一变化的就是吃的人不一样,所以通过商家构造方法传入每一个不同的用户,实现每个人不同的吃法
    public static class shop {
        people pp=null;
        public shop(String name){
            pp=new people(name);
        }
        public void work(){
            System.out.println("商家接到点的菜,开始制作");
            pp.eat();
            System.out.println("吃完了,商家要债来了");
        }
    }

    public static void main(String[] args) {
        shop s=new shop("张三");
        s.work();
    }

 静态代理是动态代理的基础版,因为静态代理有不利于维护、代码冗余的不足,所以项目中多数用的都是动态代理

猜你喜欢

转载自www.cnblogs.com/buggou/p/12664020.html