美文网首页
静态代理模式

静态代理模式

作者: 兜兜里面没有钱 | 来源:发表于2018-02-03 12:56 被阅读5次
    在静态代理这块我举个例子如我们在mvp的模式中,  静态代理动态代理都要用   p 绑定 v, p 解绑 v 。我在这里用一小段代码来阐释下,静态代理是怎么样的。
    我拿餐馆举例子。去餐馆我们肯定要去吃饭,然后厨师会给我做我们需要的饭,但我们要吃什么饭,我们得自己来说,厨师只能在你说了什么菜之后,才能做饭。
    在这里我们先去创建一个接口类来,IRestaurant代码如下
    
    
    public interface IRestaurant {
     void  applySomeThing();
    }
    

    我们在去创建一个自己,Man类,去实现这个接口

    
    public class Man  implements IRestaurant {
        @Override
        public void applySomeThing() {
            System.out.print("我要吃肉");
        }
    }
    

    我们还需要一个厨师类Chef

    public class Chef implements IRestaurant {
    
        private IRestaurant mIRestaurant;
        public Chef(IRestaurant iRestaurant) {
            this.mIRestaurant = iRestaurant;
        }
        @Override
        public void applySomeThing() {
            mIRestaurant.applySomeThing();
            System.out.print("我去做饭");
        }
    }
    

    在创建厨师类的时候,我们需要给他一个IRestaurant 的对象,在他要做一些事情的时候,这个对象去调用这个对象的本身的方法。Chef就代替了Man类做了一些事情。
    在需要调用的地方我们这样写就实现了这个静态代理。

               Man man=  new Man();
                Chef chef = new Chef(man);
                chef.applySomeThing();
    

    但是我们在IRestaurant 里面再去添加一个方法的话,在Man和Chef里面又会多一个方法,慢慢的就会导致代码量很大。在这里我们就会用动态代理来解决这个问题。下一篇我会写一下这个动态代理,大家可以去看我的动态代理这篇文章

    相关文章

      网友评论

          本文标题:静态代理模式

          本文链接:https://www.haomeiwen.com/subject/ibkuzxtx.html