Proxy

https://en.m.wikipedia.org/wiki/Proxy

代理人 与 被代理人 是 一对一的关系。

A proxy is an agent or substitute authorized to act for another person or a document which authorizes the agent so to act, and may also be used in the following contexts:

delegate

https://en.m.wikipedia.org/wiki/Delegate

代表模式 -- 组织与组织之间的会谈, 派出的代表来商谈。

A delegate is someone who attends or communicates the ideas of or acts on behalf of an organization at a meeting or conference between organizations, which may be at the same level or involved in a common field of work or interest.

Organizations may hold conventions where the membership from different parts of the organization is assembled.[1] Delegates attend the convention to represent their part of the organization.

For example, an organization may be national in scope and consist of many local member clubs. Such an organization may hold an annual meeting where each local club can send delegates, or representatives to vote on behalf of the club, to the national convention.

agent

https://en.m.wikipedia.org/wiki/Law_of_agency

The law of agency is an area of commercial law dealing with a set of contractual, quasi-contractual and non-contractual fiduciary relationships that involve a person, called the agent, that is authorized to act on behalf of another (called the principal) to create legal relations with a third party.[1] Succinctly, it may be referred to as the equal relationship between a principal and an agent whereby the principal, expressly or implicitly, authorizes the agent to work under his or her control and on his or her behalf. The agent is, thus, required to negotiate on behalf of the principal or bring him or her and third parties into contractual relationship. This branch of law separates and regulates the relationships between:

  • agents and principals (internal relationship), known as the principal-agent relationship;
  • agents and the third parties with whom they deal on their principals' behalf (external relationship); and
  • principals and the third parties when the agents deal.
['eɪdʒənt]['eɪdʒ(ə)nt]
  • n.经纪人;(演员、音乐家、运动员、作家等的)代理人
  • 网络代理商;代理专区;智能体
1.

a person or business authorized to act on another's behalf:

Our agent in Hong Kong will ship the merchandise. A best-selling author needs a good agent.

Proxy Agent 区别

http://www.cnblogs.com/Enjoymyprocess/archive/2010/04/11/1709724.html

Proxy -- 中介 -- 通道

Agent -- 代理 -- 具有行为能力的实体, 被授权,完全代表。

Proxy物理上至少部分存在客户端,只有胖客户端和瘦客户端之分,如发Email,装个Foxmail就是胖Proxy,登录mail.163.com/mail.qq.com就是瘦客户端,这没什么本质区别,总之Proxy代理了用户向Agent发出了请求,它是渠道,是工具,直接面向用户。

Agent相对Proxy来说,更有了实体气质。在英文里面,一个坐席员,一个投诉处理专员,一个销售人员,都可以称为Agent,他是代表一个大实体和客户打交道的小实体,做为一种实体,它是可以资源化的,数量有上限,有生命周期,比如每个公司的客服部每个班次只有那么多员工,这批员工根据不同的技能分组,不同组别的员工处理不同的业务投诉、咨询,受理,他们通过不同的渠道(用户通过Proxy投递信息的方式)如IVR,邮件,网站收到用户的信息,并开始(注意,是“开始”)处理。

Proxy 和 Delegate 区别

http://www.cnblogs.com/x3d/archive/2012/06/27/2566324.html

代理(Proxy)是名词,委派(Delegate)是动词,其次代理说明了若干个对象实现了一个共同的接口,而委派只是说明一个对象引用了另一个对象,并不牵扯接口。

Delegate DEMO

http://groovy-lang.org/design-patterns.html#_delegation_pattern

The Delegation Pattern is a technique where an object’s behavior (public methods) is implemented by delegating responsibility to one or more associated objects.

class Person {
def name
@Delegate MortgageLender mortgageLender = new MortgageLender()
} class MortgageLender {
def borrowAmount(amount) {
"borrow \\$$amount"
}
def borrowFor(thing) {
"buy $thing"
}
} def p = new Person() assert "buy present" == p.borrowFor('present')
assert "borrow \\$50" == p.borrowAmount(50)

Proxy DEMO

http://groovy-lang.org/design-patterns.html#_proxy_pattern

The Proxy Pattern allows one object to act as a pretend replacement for some other object. In general, whoever is using the proxy, doesn’t realise that they are not using the real thing. The pattern is useful when the real object is hard to create or use: it may exist over a network connection, or be a large object in memory, or be a file, database or some other resource that is expensive or impossible to duplicate.

1.13.1. Example

One common use of the proxy pattern is when talking to remote objects in a different JVM. Here is the client code for creating a proxy that talks via sockets to a server object as well as an example usage:

class AccumulatorProxy {
def accumulate(args) {
def result
def s = new Socket("localhost", 54321)
s.withObjectStreams { ois, oos ->
oos << args
result = ois.readObject()
}
s.close()
return result
}
} println new AccumulatorProxy().accumulate([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
// => 55

Here is what your server code might look like (start this first):

class Accumulator {
def accumulate(args) {
args.inject(0) { total, arg -> total += arg }
}
} def port = 54321
def accumulator = new Accumulator()
def server = new ServerSocket(port)
println "Starting server on port $port"
while(true) {
server.accept() { socket ->
socket.withObjectStreams { ois, oos ->
def args = ois.readObject()
oos << accumulator.accumulate(args)
}
}
}

Groovy 设计模式 -- proxy & delegate的更多相关文章

  1. Android的Proxy/Delegate Application框架 (主要介绍插件化开发)

    1. 插件化的原理 是 Java ClassLoader 的原理:Java ClassLoader基础 常用的其他解决方法还包括:Google Multidex,用 H5 代替部分逻辑,删无用代码,买 ...

  2. Android的Proxy/Delegate Application框架

    转自:http://blogs.360.cn/360mobile/2013/11/25/proxydelegate-application/#comment-77 有的时候,为了实现一些特殊需求,如界 ...

  3. php设计模式 Proxy (代理模式)

    代理,指的就是一个角色代表另一个角色采取行动,就象生活中,一个红酒厂商,是不会直接把红酒零售客户的,都是通过代理来完成他的销售业务.而客户,也不用为了喝红酒而到处找工厂,他只要找到厂商在当地的代理就行 ...

  4. 设计模式——proxy代理模式

    目录 概述 定义 角色 为什么会有代理模式? 应用场景 示例 静态代理 例子 动态代理 JDK中生成代理对象的API 代码示例: 代码示例2 Cglib代理 代码示例 AOP(AspectOrient ...

  5. 设计模式--Proxy

    转自:http://blog.csdn.net/dan_xp/article/details/1820852 最近一直在看java的设计模式 ,感觉印象最深刻的就是"面向接口编程" ...

  6. 巧用代理设计模式(Proxy Design Pattern)改善前端图片加载体验

    这篇文章介绍一种使用代理设计模式(Proxy Design Pattern)的方法来改善您的前端应用里图片加载的体验. 假设我们的应用里需要显示一张尺寸很大的图片,位于远端服务器.我们用一些前端框架的 ...

  7. Java代理设计模式(Proxy)的四种具体实现:静态代理和动态代理

    面试问题:Java里的代理设计模式(Proxy Design Pattern)一共有几种实现方式?这个题目很像孔乙己问"茴香豆的茴字有哪几种写法?" 所谓代理模式,是指客户端(Cl ...

  8. 设计模式-Proxy(结构型模式)

    以下代码来源: 设计模式精解-GoF 23种设计模式解析附C++实现源码 //Proxy.h #pragma once class Subject { public: virtual ~Subject ...

  9. 设计模式--Proxy模式

    这篇主要介绍代理模式相关内容,主要是一些基本概念普及. 代理模式 1.什么是代理模式? 代理模式(Proxy),为其他对象提供一种代理以控制对这个对象的访问.[DP] 通俗的说就是指客户端并不直接调用 ...

随机推荐

  1. photoshop学习2

    关于PS学习的一些基础知识.PS用了很长时间了,从来就没有明白过到底在做什么.今天看了视频,发现原来自己根本不会PS,其实本来也未曾会过.以前自己使用PS做一些工作,也仅限于裁图片,调一下亮度对比度, ...

  2. 【linux】Linux系统SELinux简介

    安全加强型Linux(Security-Enhanced Linux)简称 SELinux,它是一个 Linux 内核模块,也是 Linux 的一个安全子系统. 是linux安全加强的另一种实现方式. ...

  3. Gym - 100989L

    After the data structures exam, students lined up in the cafeteria to have a drink and chat about ho ...

  4. Linux下Chrome/Chromium窗口边框有白线

    原因 窗口边框有白线是因为没有开启使用系统边框和标题栏 解决方法 勾选菜单-设置-外观-使用系统标题栏和边框 效果展示

  5. [AC自动机][学习笔记]

    用途 AC自动机适用于一类用多个子串在模板串中匹配的字符串问题. 也就是说先给出一个模板串,然后给出一些子串.要求有多少个子串在这个模板串中出现过. KMP与trie树 其实AC自动机就是KMP与tr ...

  6. Flask Mysql数据库连接

    下载库: pip install flask-sqlalchemy 下载后进入终端使用python后import导入模块测试没有报错就说明成功了 py文件: # -*- encoding: utf-8 ...

  7. MySQL 之 库操作,表操作

    系统数据库 information_schema :虚拟库,不占用磁盘空间,存储的是数据库启动后的一些参数,如用户表信息.列信息.权限信息.字符信息等 mysql:核心数据库,里面包含用户.权限.关键 ...

  8. IT项目管理分享7个开源项目管理工具

    在一项调查中,有 71% 的组织表示他们在开发过程中会用到敏捷方法. 此外,用敏捷方法管理项目比传统方法管理项目成功率高 28%.在这次工具推荐中,我们从一些比较受欢迎的开源项目管理工具中摘取了支持敏 ...

  9. 第十一节、Harris角点检测原理(附源码)

    OpenCV可以检测图像的主要特征,然后提取这些特征.使其成为图像描述符,这类似于人的眼睛和大脑.这些图像特征可作为图像搜索的数据库.此外,人们可以利用这些关键点将图像拼接起来,组成一个更大的图像,比 ...

  10. 第六节,TensorFlow编程基础案例-保存和恢复模型(中)

    在我们使用TensorFlow的时候,有时候需要训练一个比较复杂的网络,比如后面的AlexNet,ResNet,GoogleNet等等,由于训练这些网络花费的时间比较长,因此我们需要保存模型的参数. ...