设计模式:代理模式(学习笔记)

代理模式原理:

       监控糖果机:地点、糖果库存和当前状态

       本地糖果机问题:远程获取不到本地对象,信息需要通过网络传输。

       解决方案:

                    1.在本地加上Socket,实现数据传统(底层开发)。

                    2.通过Web服务器实现远程传输数据,控制本地机器。(方案1、2工作量比较大

                    3.从本地监控器,本地传入Monitor对象,通过Monitor实现远程代理监控。

远程代理:远程对象的本地代表,通过它可以让远程对象当本地对象来调用。

                 远程代理通过网络和真正的远程对象沟通信息,不需要Socket,WebServer服务器,工作量最小。


远程代理雷土结构:

传统方案:

设计模式:代理模式(学习笔记)

RMI方案:

              RMI面向对象,Socket面向过程,RMI实现方案比Socket易实现。

设计模式:代理模式(学习笔记)

代理模式:

        为一个对象提供一个替身,以控制对这个对象的访问。被代理的对象可以是远程对象、创建开销大的对象或需要安全控制的对象。
        代理模式有很多变体,都是为了控制与管理对象访问。


RMI介绍:

       RMI远程方法调用是计算机之间通过网络实现对象调用的一种通讯机制。
       使用这种机制,一台计算机上的对象可以调用另外 一台计算机上的对象来获取远程数据。
       在过去,TCP/IP通讯是远程通讯的主要手段,面向过程的开发。
       而RPC使程序员更容易地调用远程程序,但在面对复杂的信息传讯时,RPC依然未能很好的支持。
       RMI被设计成一种面向对象开发方式,允许程序员使用远程对象来实现通信

RMI实现步骤:

        1.制作远程接口(本地调用):接口文件(返回参数可序列化,序列化后才能传到对端,对端在反序列化才能获取数据)。
        2.远程接口的实现(Server端实现):Service文件,供远端实现该接口。
        3.RMI服务端注册,开启服务:实现RMI接口的终端,在服务端注册,注册后再服务端可查找到该终端。
        4.RMI代理端通过RMI查询到服务端,建立联系,通过接口调用远程方法。

几种常见的代理模式介绍:

         虚拟代理:

                        虚拟代理为创建开销大的对象提供代理服务。
                        真正的对象在创建前和创建中时,由虚拟代理来扮演替身。

                                          似乎很神秘,其实很简单
                                          如:Android的在线图片加载类(网络传图片的过程)

         动态代理:

                         运行时动态的创建代理类,并将方法调用转发到指定类。

                                           设计模式:代理模式(学习笔记)
                      Proxy与InvocationHandler实现动态代理。

         保护代理:

                      用户不能访问代理,只能通过代理获取,代理类自己内部可以实现修改,其余只能获取值并不能呢个修改。
         几种变体:

                 防火墙代理:内网访问外网出口处设置代理,内网通过代理访问外网。
                 缓存代理:例如浏览器缓存,本地方一份,使用时先从本地取,本地没有时再从服务器获取。
                 智能引用代理:引用某个对象时,增加辅助统计工作。
                 同步代理:多线程操作时,多线程同步访问一个对象。

                 写入时复制代理:copy文件时,复制后实际比操作,只有写入时才正式操作。

代理模式关键点:

                 原理和意义:终端与服务端对应,由代理类与真实类互相沟通实现两端数据同步。

                 关键点:实现需要四个步骤。

                 代理模式和装饰者模式差异: 

                             装饰者模式,装饰以后会添加新功能,不对原来对象控制,会增加新的功能。

                             代理模式目的是对目标对象访问的控制和管理,不增加新的功能。