设计模式2 - 代理模式【Proxy Pattern】

简介: 设计模式2 - 代理模式【Proxy Pattern】

代理模式

定义:

其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。

Code(潘金莲例子):

定义接口(描述女人):

/**
* 定义一种类型的女人,王婆和潘金莲都属于这个类型的女人
*/
public interface KindWomen { 
        //这种类型的女人能做什么事情呢?
        public void makeEyesWithMan(); //抛媚眼
        //happy what? You know that!
        public void happyWithMan();

实现两个接口(王婆和潘金莲):

public class PanJinLian implements KindWomen { 
public void happyWithMan() { 
     System.out.println("潘金莲在和男人做那个....."); 
 } 
public void makeEyesWithMan() { 
     System.out.println("潘金莲抛媚眼"); 
    } 
} 
--------------------------------------------
/**
* 王婆这个人老聪明了,她太老了,是个男人都看不上,
* 但是她有智慧有经验呀,她作为一类女人的代理!
*/
public class WangPo implements KindWomen { 
private KindWomen kindWomen; 
public WangPo(){ //默认的话,是潘金莲的代理
     this.kindWomen = new PanJinLian(); 
} 
//她可以是KindWomen的任何一个女人的代理,只要你是这一类型
public WangPo(KindWomen kindWomen){ 
     this.kindWomen = kindWomen; 
} 
public void happyWithMan() {    
     //自己老了,干不了,可以让年轻的代替
     this.kindWomen.happyWithMan(); 
 } 
public void makeEyesWithMan() { 
     //王婆这么大年龄了,谁看她抛媚眼?!
     this.kindWomen.makeEyesWithMan(); 
  } 
}  

开始执行(西门庆找王婆):

public static void main(String[] args) { 
     //把王婆叫出来
     WangPo wangPo = new WangPo(); 
     //然后西门庆就说,我要和潘金莲happy,然后王婆就安排了西门庆丢筷子的那出戏:
     //看到没,虽然表面上时王婆在做,实际上爽的是潘金莲
     wangPo.makeEyesWithMan();
     wangPo.happyWithMan(); 
     } 

总结:

代理模式主要使用了 Java 的多态,干活的是被代理类,代理类主要是接活。

目录
相关文章
|
6天前
|
设计模式 前端开发 数据安全/隐私保护
前端必须掌握的设计模式——代理模式
代理模式(Proxy Pattern)是一种结构型设计模式,通过引入“替身”对象来间接访问真实对象,从而解耦并提升性能和安全性。例如,知名艺人复出后,经纪人作为代理筛选商单,确保只处理符合团队利益的请求。代码实现中,定义接口`IService`,艺人和经纪人都实现该接口,经纪人在访问时进行过滤和转发。代理模式常用于权限控制、性能优化等场景,如前端中的Tree-shaking和ES6的Proxy构造方法。
前端必须掌握的设计模式——代理模式
|
3月前
|
设计模式 缓存 安全
设计模式——代理模式
静态代理、JDK动态代理、Cglib 代理
设计模式——代理模式
|
3月前
|
设计模式 Java 数据安全/隐私保护
Java设计模式-代理模式(7)
Java设计模式-代理模式(7)
|
3月前
|
设计模式
设计模式-工厂模式 Factory Pattern(简单工厂、工厂方法、抽象工厂)
这篇文章详细解释了工厂模式,包括简单工厂、工厂方法和抽象工厂三种类型。每种模式都通过代码示例展示了其应用场景和实现方法,并比较了它们之间的差异。简单工厂模式通过一个工厂类来创建各种产品;工厂方法模式通过定义一个创建对象的接口,由子类决定实例化哪个类;抽象工厂模式提供一个创建相关或依赖对象家族的接口,而不需要明确指定具体类。
设计模式-工厂模式 Factory Pattern(简单工厂、工厂方法、抽象工厂)
|
3月前
|
设计模式 Java
设计模式--适配器模式 Adapter Pattern
这篇文章介绍了适配器模式,包括其基本介绍、工作原理以及类适配器模式、对象适配器模式和接口适配器模式三种实现方式。
|
4月前
|
设计模式 缓存 Java
【十一】设计模式~~~结构型模式~~~代理模式(Java)
文章详细介绍了代理模式(Proxy Pattern),这是一种对象结构型模式,用于给对象提供一个代理以控制对它的访问。文中阐述了代理模式的动机、定义、结构、优点、缺点和适用环境,并探讨了远程代理、虚拟代理、保护代理等不同代理形式。通过一个商务信息查询系统的实例,展示了如何使用代理模式来增加身份验证和日志记录功能,同时保持客户端代码的无差别对待。此外,还讨论了代理模式在分布式技术和Spring AOP中的应用,以及动态代理的概念。
【十一】设计模式~~~结构型模式~~~代理模式(Java)
|
4月前
|
设计模式
设计模式的基础问题之代理模式在工作中的问题如何解决
设计模式的基础问题之代理模式在工作中的问题如何解决
|
5月前
|
设计模式 算法 Go
iLogtail设计模式问题之代理模式在iLogtail中是如何应用的
iLogtail设计模式问题之代理模式在iLogtail中是如何应用的
|
5月前
|
设计模式 缓存 JavaScript
js设计模式【详解】—— 代理模式
js设计模式【详解】—— 代理模式
34 0
|
1月前
|
设计模式 安全 Java
Kotlin教程笔记(51) - 改良设计模式 - 构建者模式
Kotlin教程笔记(51) - 改良设计模式 - 构建者模式

热门文章

最新文章