java设计模式——代理模式

作者: Mr_欢先生 | 来源:发表于2018-03-12 17:21 被阅读40次

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、实现代理模式需要额外的工作,有些代理模式的实现非常复杂。

相关文章

  • java动态代理(JDK和cglib)(转载自http://ww

    java动态代理(JDK和cglib) JAVA的动态代理 代理模式 代理模式是常用的java设计模式,他的特征是...

  • java建造者模式

    其他设计模式java单例模式java建造者模式java策略模式java代理模式java观察者模式java适配器模式...

  • java单例模式

    其他设计模式java单例模式java建造者模式java策略模式java代理模式java观察者模式java适配器模式...

  • java外观模式

    其他设计模式java单例模式java建造者模式java策略模式java代理模式java观察者模式java适配器模式...

  • java适配器模式

    其他设计模式java单例模式java建造者模式java策略模式java代理模式java观察者模式java适配器模式...

  • java观察者模式

    其他设计模式java单例模式java建造者模式java策略模式java代理模式java观察者模式java适配器模式...

  • java代理模式

    其他设计模式java单例模式java建造者模式java策略模式java代理模式java观察者模式java适配器模式...

  • java策略模式

    其他设计模式java单例模式java建造者模式java策略模式java代理模式java观察者模式java适配器模式...

  • Java代理模式之JDK动态代理

    了解什么是动态代理模式,可参考Java设计模式之代理模式 简介 JDK动态代理是java.lang.reflect...

  • 动态代理原理解析

    注:源自于Android 一、代理模式 代理模式是java23种设计模式常用的一种设计模式。代理模式是客户端不直接...

网友评论

    本文标题:java设计模式——代理模式

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