Java設計模式之:靜態代理


一、簡介

代理:代理對象主要用來攔截被代理對象的訪問

  1. 代理對象可以理解爲明星的經紀人,被代理對象可以理解爲某個明星
  2. 代理對象要持有真實業務對象,即在代理類中創建被代理類的對象
  3. 代理對象和被代理對象,具備相同的行爲方法. 實現同一個接口
  4. 代理對象攔截被代理對象的訪問,可以修改訪問的參數 返回值 甚至攔截訪問

二、代碼

1、啓動類

public class StaticProxy {
    public static void main(String[] args) {
        new WeddingCompany(new You()).happyMarry();
    }
}

2、定義接口

interface Marry {
    void happyMarry();
}

3、真實角色

//    真實角色
class You implements Marry {

    @Override
    public void happyMarry() {
        System.out.println("我本人結婚了");
    }
}

4、代理角色

//代理角色
 class WeddingCompany implements Marry {
    //        真實角色對象
    private Marry target;

    public WeddingCompany(Marry target) {
        this.target = target;
    }

    @Override
    public void happyMarry() {
        ready();
        this.target.happyMarry();
        after();
    }

    private void ready() {
        System.out.println("婚前佈置");
    }

    private void after() {
        System.out.println("婚後收拾");
    }
}

三、完整代碼

public class StaticProxy {
    public static void main篩選出        (String[] args) {
        new WeddingCompany(new You()).happyMarry();
    }
}

interface Marry {
    void happyMarry();
}

//    真實角色
class You implements Marry {

    @Override
    public void happyMarry() {
        System.out.println("我本人結婚了");
    }
}


//代理角色
 class WeddingCompany implements Marry {
    //        真實角色對象
    private Marry target;

    public WeddingCompany(Marry target) {
        this.target = target;
    }

    @Override
    public void happyMarry() {
        ready();
        this.target.happyMarry();
        after();
    }

    private void ready() {
        System.out.println("婚前佈置");
    }

    private void after() {
        System.out.println("婚後收拾");
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章