zoukankan      html  css  js  c++  java
  • 不一样的代理模式(设计模式十三)

    前言

    什么是代理模式呢?比如说你要去办一件事,你请了一个代理去办,为什么请一个代理去办呢?原因也很简单就是因为这件事复杂,但是你要做的事情就是你的一个手印即可。

    在代理模式(Proxy Pattern)中,一个类代表另一个类的功能。这种类型的设计模式属于结构型模式。

    在代理模式中,我们创建具有现有对象的对象,以便向外界提供功能接口。

    主要解决:在直接访问对象时带来的问题,比如说:要访问的对象在远程的机器上。在面向对象系统中,有些对象由于某些原因(
    比如对象创建开销很大,或者某些操作需要安全控制,或者需要进程外的访问),直接访问会给使用者或者系统结构带来很多麻烦,我们可以在访问此对象时加上一个对此对象的访问层。

    何时使用:想在访问一个类时做一些控制。

    如何解决:增加中间层。

    正文

    最典型的就是webservice,在c# 中我们使用引用服务,这个时候我们可以通过访问和我们webservice 相同的方法名即可访问。

    1.要访问对象在远程的服务器上,那么是不可以直接访问的。

    2.提供一个相同的方法进行代理,中间访问过程是非常复杂的,因为这涉及到去调用webservice 然后返回。

    3.一般来说代理模式的代码是自动生成的

    如果要查到代码案例:
    https://www.runoob.com/design-pattern/proxy-pattern.html

    然后我在网上找了一个例子,比如说订单系统的案例,这个例子

    介绍一下优缺点:

    优点: 1、降低了类的复杂度,将一对多转化成了一对一。 2、各个类之间的解耦。 3、符合迪米特原则。

    缺点:中介者会庞大,变得复杂难以维护。

    因为这是一种思想,没有找到好的代码介绍,后续补充。

  • 相关阅读:
    geth搭建以太坊私链及常用操作
    什么是区块链?
    linux的命令
    MySQL的sql优化
    如何防止秒杀抢购超卖?
    try catch影响Spring事务吗?
    mysql中InnoDB与MyISAM的区别
    进程和线程的区别
    Nginx采用yum安装方式及安装后的目录
    Springboot2.0中jpa默认创建的mysql表为myisam引擎问题
  • 原文地址:https://www.cnblogs.com/aoximin/p/13600449.html
Copyright © 2011-2022 走看看