定义:
代理模式(Proxy Pattern)是对某个对象提供一种名为代理的方式以控制其他对象对这个对象的访问的设计方法。
主要作用:
为其他对象提供一种代理以控制对这个对象的访问。特别地,一个对象不想或者不能直接引用另一个对象,比如一个对象处于客户端,而另一个对象处于服务器,两者进行少量的调用时还好,若两者间调用过多或复杂时,代理模式就可以减少资源浪费,提高效率,作用重大。代理对象在这两个对象间就是中介的作用。
所谓“代理模式”就是在双方间增加一个代理对象,以更好地解决需要不同方法或修改方法的需求,是符合OOP的基本设计原则的常用模式。
例如:假设有一组对象都实现同一个接口,实现同样的方法,但随着需求的变化,这组对象中有一部分对象需要增加一些特有的方法或功能,有两种方法:
1、每一个需要特殊方法的地方都加上这个方法,但是显然这样不科学,很浪费,代码的重用性低,耦合性高。
2、利用代理方式,在代理对象中创建该方法,就可以漂亮地解决了。
生活中的例子:
比如那些明星,明星要和很多人接触,有导演、主持人、厂商、其他明星、唱片公司、形象设计师……这些人都要和明星见面,但见面后说的事不同,方式也有可能不同,但他们都要做同一件时就说约见面的时间和地点。明星自己显然是忙不过吧,而且明星身处位置也有可能和要见面的人相距很远。ok,代理模式帮你解决,于是就有了经纪人。明星就是一个对象,那些有需要和她见面的人就是其他的对象,而经纪人就是代理对象,代理对象代替明星和其他对象交流沟通,安排细节事情,这样明星就可以一心一意地做事。
我的例子如下:
以上面的生活中的例子来讲:
/*假设有一个Star接口,有空的方法maketime()(邀约),
所有的people对象都实现(implements)这个接口,实现maketime()
方法,将people实例化成为一个个人,执行maketime方法,而这些人与明
星还要约见面地点,那么我们既不能在Star接口里增加makeplace()方法,
而每个people中增加makeplace方法又不科学,我们只有增加一个代理类makeProxy,这个代理类里实现maketime和makeplace方法,然后在需
要makeplace方法的地方调用makeProxy即可。*/
public class Test {
/**代理模式
*/
public static void main(String[] args) {
People people1=new People("张艺谋");
people1.maketime("Star");
System.out.println("-----------------------------");
makeProxy maketimer=new makeProxy (people1);
maketimer.maketime("Star","街角咖啡屋");
}
}
public interface Star{
public void maketime(String msg);
}
public class People implements Star{
public String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name= name;
}
public People(String name1) {
this.name= name1;
}
public void maketime(String msg) {
System.out.println(msg+"!你好,我是"+name+",我想约在:9点");
}
}
public class makeProxy implements Star{
People maketimer;
public makeProxy(Star maketimer) {
this.maketimer=maketimer;
}
public void maketime(String msg) {
maketimer.maketime(msg);
}
public void maketime(String msg,String placename) {
maketimer.maketime(msg);
makeplace(placename);
}
private void makeplace(String placename){
System.out.println("地点是:"+placename);
}
}
}
分享到:
相关推荐
设计模式代理模式PPT学习教案 本PPT学习教案主要讲解设计模式中的代理模式,通过示例代码和图表,详细介绍了代理模式的定义、结构、实现和应用场景。 知识点1:代理模式的定义 代理模式(Proxy Pattern)是一种...
代理模式是一种常用的设计模式,它在软件开发中扮演着重要的角色,特别是在iOS平台的应用程序设计中。代理模式的核心思想是为一个对象提供一个替身或代理,以控制对这个对象的访问。这种模式允许我们通过代理来间接...
代理模式是一种常用的设计模式,它在软件开发中扮演着重要角色,主要用来为其他对象提供一种代理以控制对这个对象的访问。在这个专题中,我们将深入探讨代理模式,并通过Python和C++两种语言来实现示例代码。 首先...
C++实现代理模式,隐藏了真实的对象并且可以扩展其他的非核心功能,还实现了强制代理
代理模式是一种常用的设计模式,它在软件开发中扮演着重要角色,允许我们通过一个代理类来控制对原对象的访问。在《设计模式:可复用面向对象软件的基础》(通常称为GoF设计模式)中,代理模式被定义为“为其他对象...
代理模式是一种常用的设计模式,它在软件开发中起到了中介或者代表的作用。代理模式的主要目的是为其他对象提供一种代理以控制对这个对象的访问。通过引入代理,我们可以增加新的功能,如缓存、日志记录、访问控制等...
代理模式是一种常用的设计模式,它在软件工程中扮演着重要的角色,主要用来为其他对象提供一个代理以控制对这个对象的访问。通过代理模式,我们可以实现远程代理、虚拟代理、安全代理、缓存代理等多种功能,提高代码...
### Java设计模式之虚拟代理模式详解 #### 一、引言 在软件工程领域,设计模式作为一种被广泛接受的最佳实践,对于提高代码质量和可维护性起着至关重要的作用。其中,“代理模式”作为结构型设计模式之一,在解决...
**代理模式**是一种常用的设计模式,它在软件开发中扮演着重要的角色,特别是在对象的访问控制、性能优化、安全策略等方面。代理模式的核心思想是为一个对象提供一个替身,这个替身即代理对象,代理对象可以控制对原...
在C#编程中,设计模式是一种经过验证的解决常见问题的最佳实践。代理模式是其中一种,它在软件设计中扮演着重要角色。本实例将详细阐述如何在C#中运用代理模式。 代理模式的主要思想是为一个对象提供一个替身或代理...
//代理模式内部引用了真实角色 public void requst() { this.preRequest(); //在真实角色操作之前所附加的操作 if(null == realsubject) { realsubject = new ReallSubject(); } realsubject.requst(); // ...
**设计模式之代理模式** 代理模式是软件设计模式中的一种结构型模式,它在对象交互过程中引入一个代理,代理对象负责控制对原对象的访问。这种模式的主要目的是为了解耦,提供一种替代真实对象的方式,使得客户端...
**设计模式实现——代理模式** 在软件工程中,设计模式是一种通用可重用的解决方案,它描述了在特定上下文中经常出现的问题以及该问题的解决方案。代理模式是设计模式的一种,它提供了一种对目标对象的间接访问方式...
在这个“Java设计模式-代理模式例子”中,我们将深入探讨代理模式的概念、实现方式以及它在实际开发中的应用。 代理模式的核心思想是为一个对象提供一个替身,这个替身即代理对象,代理对象控制对原对象的访问。在...
**Java设计模式——代理模式详解** 代理模式是软件设计模式中的一个重要组成部分,它在Java编程中扮演着举足轻重的角色。代理模式的核心思想是为一个对象提供一个替身,这个替身即代理对象,代理对象可以控制对原...
代理模式是一种常用的设计模式,它在软件工程中扮演着重要的角色,特别是在.NET框架下。代理模式的核心思想是为一个对象提供一个替代品或代表,这个替代品能够控制对原对象的访问,使得客户端代码可以通过代理对象与...
代理模式是设计模式的一种,它提供了一种对目标对象进行增强或者控制访问的方式。在本实例中,我们将深入探讨Java中的代理模式及其应用。 代理模式的核心思想是为一个对象创建一个代理对象,这个代理对象在客户端和...
其中包括代理模式(Proxy)、装饰器模式(Decorator)、适配器模式(Adapter)、桥接模式(Bridge)、组合模式(Composite)、外观模式(Facade)和享元模式(Flyweight)。这些模式帮助我们在不修改原有代码的情况...
适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。 行为型模式(11): 策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、...
详细而又简单的讲述了java动态代理设计模式