面向对象建模技术之设计模式——代理模式

本文内容可以直达下载ppt详细版本:

面向对象建模技术——17种设计模式的详细介绍-行业报告文档类资源-CSDN下载

或选择各种知识的综合大礼包:

面向对象建模技术+UML+各种模型图+统一建模语言+17种设计模式的ppt-行业报告文档类资源-CSDN下载


目录

一. 代理模式动机

二. 代理模式定义

三. 代理模式结构 

四. 代理模式分析

五. 代理模式应用

六. 代理模式分析

6.1 典型的代理类实现代码:

七. 代理模式实例与解析

7.1 数学运算代理

八. 代理模式的优缺点

8.1 代理模式的优点

8.2 代理模式的缺点

九. Java动态代理 

十. 设计模式专栏  


一. 代理模式动机

        在某些情况下,一个客户不想或者不能直接引用一个对象,此时可以通过一个称之为“代理”的第三者来实现间接引用。代理对象可以在客户端和目标对象之间起到中介的作用,并且可以通过代理对象去掉客户不能看到的内容和服务或者添加客户需要的额外服务。

        通过引入一个新的对象来实现对真实对象的操作或者将新的对象作为真实对象的一个替身,这种实现机制即为代理模式,通过引入代理对象来间接访问一个对象,这就是代理模式的模式动机。 

面向对象建模技术之设计模式——代理模式_第1张图片


二. 代理模式定义

        代理模式(Proxy Pattern) :给某一个对象提供一个代理,并由代理对象控制对原对象的引用。代理模式的英文叫做Proxy或Surrogate,它是一种对象结构型模式。 


三. 代理模式结构 

面向对象建模技术之设计模式——代理模式_第2张图片

        代理模式包含如下角色:

  • Subject: 抽象主题角色;
  • Proxy: 代理主题角色;
  • RealSubject: 真实主题角色;

四. 代理模式分析

        代理模式示意结构图比较简单,一般可以简化为如下图所示,但是在现实中要复杂很多(如远程调用)。 

面向对象建模技术之设计模式——代理模式_第3张图片


五. 代理模式应用

1)Java RMI (Remote Method Invocation,远程方法调用)。 

面向对象建模技术之设计模式——代理模式_第4张图片

2)EJB、Web Service等分布式技术都是代理模式的应用。在EJB中使用了RMI机制,远程服务器中的企业级Bean在本地有一个桩代理,客户端通过桩来调用远程对象中定义的方法,而无须直接与远程对象交互。在EJB的使用中需要提供一个公共的接口,客户端针对该接口进行编程,无须知道桩以及远程EJB的实现细节。


六. 代理模式分析

6.1 典型的代理类实现代码:

public class Proxy implements Subject
{
    private RealSubject realSubject = new RealSubject();
    public void preRequest()
    {…...}
    public void request()
    {
        preRequest();
        realSubject.request();
        postRequest();
    }
    public void postRequest()
    {……}
} 

七. 代理模式实例与解析

7.1 数学运算代理

实例背景:

        模拟应用远程代理来访问另外一个应用程序域中的对象,如果在远程实现了加减乘除等运算,在本地需要调用,那么可以在本地设置一个代理

面向对象建模技术之设计模式——代理模式_第5张图片


八. 代理模式的优缺点

8.1 代理模式的优点

  • 代理模式能够协调调用者和被调用者,在一定程度上降低了系统的耦合度;
  • 远程代理使得客户端可以访问在远程机器上的对象,远程机器可能具有更好的计算性能与处理速度,可以快速响应并处理客户端请求;
  • 代理通过使用一个小对象来代表一个大对象,可以减少系统资源的消耗,对系统进行优化并提高运行速度;

8.2 代理模式的缺点

  • 由于在客户端和真实主题之间增加了代理对象,因此有些类型的代理模式可能会造成请求的处理速度变慢;
  • 实现代理模式需要额外的工作,有些代理模式的实现非常复杂;

九. Java动态代理 

        静态代理:由程序员创建或特定工具自动生成源代码,再对其编译。在程序运行前,代理类的.class文件就已经存在了;

  • 静态代理:在程序运行前,代理类的.class文件就已经存在了;
  • 动态代理:在程序运行时,运用反射机制动态创建而成 Proxy类用来获取动态代理对象 InvocationHandler接口用来约束调用者实现 ;

十. 设计模式专栏  

https://blog.csdn.net/weixin_53919192/category_11817835.htmlhttps://blog.csdn.net/weixin_53919192/category_11817835.html

你可能感兴趣的:(软件开发及过程管理,设计模式,设计模式,学习,经验分享,代理模式)