JavaEE 学习专题奔跑吧,JAVA!程序员

java设计模式——代理模式

2018-03-12  本文已影响40人  Mr_欢先生

1.代理模式(Proxy Pattern)

为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。

下面举个简单的例子来说明问题:简单来说就例如经销商找明星代言,首先会找到经纪公司,经济公司再去让艺人去代言等。

UML类图

2.代码实现:

创建一个接口

public interface Subject {
    /**
     * 做广告
     */
    void Advertising();

    /**
     * 开演唱会
     */
    void OpenAConcert();
}

创建一个经经纪公司的类,来实现这个接口


public class Brokerage implements Subject {
    private Star star;

    public Brokerage(Star star){
        this.star = star;
    }
    @Override
    public void Advertising() {
        this.star.Advertising();
    }

    @Override
    public void OpenAConcert() {
        this.star.OpenAConcert();
    }
}

创建一个明星来做代言或者开演唱会


public class Star implements Subject {
    @Override
    public void Advertising() {
        System.out.println("我是明星甲,要去代言!");
    }

    @Override
    public void OpenAConcert() {
        System.out.println("我是明星甲,我要开演唱会!");
    }
}

最后创建一个经销商,来雇用明星代言

public class Sponsor {

    public static void main(String[] args) {
        Brokerage brokerage = new Brokerage(new Star());
        brokerage.Advertising();
        brokerage.OpenAConcert();
    }
}

运行结果

结果

优缺点:

  • 优点:
    1、职责清晰。
    2、高扩展性。
    3、智能化。
  • 缺点:
    1、由于在客户端和真实主题之间增加了代理对象,因此有些类型的代理模式可能会造成请求的处理速度变慢。
    2、实现代理模式需要额外的工作,有些代理模式的实现非常复杂。
上一篇 下一篇

猜你喜欢

热点阅读