静态代理模式

2018-02-03  本文已影响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里面又会多一个方法,慢慢的就会导致代码量很大。在这里我们就会用动态代理来解决这个问题。下一篇我会写一下这个动态代理,大家可以去看我的动态代理这篇文章

上一篇 下一篇

猜你喜欢

热点阅读