设计模式 代理模式

代理模式主要使用了 Java 的多态,主要是接口
干活的是被代理类,代理类主要是接活,
你让我干活,好,我交给幕后的类去干,你满意就成,那怎么知道被代理类能不能干呢?
同根就成,大家知根知底,你能做啥,我能做啥都清楚的很,同一个接口呗。

有一种快乐的女性,你懂的
public interface KindWomen { //这种类型的女人能做什么事情呢?public void makeEyesWithMan(); //抛媚眼public void happyWithMan(); //happy what? You know that!} 

两个这种的人,实现接口
在这里插入图片描述
在这里插入图片描述

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

另一个女:


public class JiaShi implements KindWomen { public void happyWithMan() { System.out.println("贾氏正在Happy中......"); } public void makeEyesWithMan() { System.out.println("贾氏抛媚眼"); } 
}
public class XiMenQing { public static void main(String[] args) { //改编一下历史,贾氏被西门庆勾走:JiaShi jiaShi = new JiaShi(); WangPo wangPo = new WangPo(jiaShi); //让王婆作为贾氏的代理人wangPo.makeEyesWithMan(); wangPo.happyWithMan(); } 
} 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/733426.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

档案室管理人员有哪些岗位

档案室管理人员的岗位可以分为以下几类: 1. 档案文书管理岗位:负责档案文书的管理、整理、归档和借阅工作,包括档案资料的分类、编目、装订、存储等。 2. 档案数字化管理岗位:负责将纸质档案数字化,进行扫描、转换、存…

mac下终端命令提示补全

欢迎来到我的博客,代码的世界里,每一行都是一个故事 mac下终端命令提示补全 前言Zsh-autosuggestions原理解析:智能提示的工作方式1. 命令历史分析:2. 智能提示生成:3. 用户交互和选择:4. 配置和个性化&…

Linux基础IO【 详 解 】

文章目录 C语言文件IOC语言文件接口汇总默认打开的三个流 系统文件IOopenclosewriteread 文件描述符fd文件描述符的分配规则重定向重定向的本质dup2 FILEFILE当中的文件描述符FILE当中的缓冲区 理解文件系统初识inode磁盘分区与格式化介绍 软硬链接软链接硬链接软硬链接的区别 …

CorelDRAW Graphics Suite2024专业图形设计软件Windows/Mac最新25.0.0.230版

CorelDRAW Graphics Suite 2024是一款专业的图形设计软件,它集成了CorelDRAW Standard 2024和其他高级图形处理工具,为用户提供了全面的图形设计和编辑解决方案。 该软件拥有强大的矢量编辑功能,用户可以轻松创建和编辑矢量图形,…

UI 易用性测试 以及自动化实现!

GUI 是指图形用户界面,UI 是指用户界面,对于纯软件系统,这两者没有本质的区别,GUI易用性测试与 UI 易用性测试内容一致。但是如果测试的对象是一个产品,这两者则存在区别,对于产品 UI 则不仅仅包括 GUI&…

多线程-线程池原子性并发工具类

1.线程池 1.线程状态 虚拟机中线程的六种状态 新建状态(NEW) --创建线程 就绪状态(RUNNABLE) --start方法 阻塞状态(BLOCKED) --无法获得锁对象 等待状态(WAITING) …

springboot254小区团购管理

小区团购管理设计与实现 摘 要 传统办法管理信息首先需要花费的时间比较多,其次数据出错率比较高,而且对错误的数据进行更改也比较困难,最后,检索数据费事费力。因此,在计算机上安装小区团购管理软件来发挥其高效地信…

菜鸟笔记-14Python绘图颜色使用

Python中绘图主要依赖于各种库,其中matplotlib是最常用且功能强大的一个。在matplotlib中,你可以使用各种颜色来表示不同的数据点、线条或填充区域。下面我将详细介绍如何在Python中使用matplotlib来设置绘图颜色,并给出具体的例子。 14.1颜…

Spring循环依赖问题分析

对象分类:1.成品对象:实例化完成 初始化完成 2.半成品对象: 实例化完成 初始化未完成 实例化和初始化可以分开执行是解决循环依赖问题的关键 一级缓存:保存完成的bean对象 二级缓存:存储成品对象 三级缓存&#xff1a…

《北上广深杭》都有哪些最值得加入的互联网大厂

IT行业做技术很公平,没那么看重出身,只要你技术好,能力强,就能进大厂,拿高薪。IT行业算是目前为数不多的比较容易屌丝逆袭的行业之一,IT行业也从来不缺少造富神话。一起加油吧,打工人&#xff0…

Python 创建PPT

本篇为如何使用Python来创建ppt文件。 创建PPT 安装必要的库 命令如下: pip install python-pptx 安装过程: 创建ppt文件 在当前目录下创建一个test的ppt文件。其中包含两页,分别使用了不同的布局。 第一页设置了标题和内容。第二页只设…

【Linux】cpp-httplib库

目录 升级gcc版本 下载cpp-httplib的zip安装包,上传到服务器 ​编辑 简单使用 首先打开gittee,搜索cpp-httplib,选择其中一个即可 也可以点下方链接 cpp-httplib库:cpp-httplib: cpp-httplib (gitee.com) 注意:cpp-httplib在使用的时候需…

AJAX-HTTP协议

文章目录 HTTP协议请求报文响应报文接口文档 HTTP协议 规定了浏览器发送及服务器返回内容的格式 请求报文 浏览器按照HTTP协议要求的格式,发送给服务器的内容 组成部分: 1.请求行:请求方法,URL,协议 2.请求头&#…

算法的时间复杂度和空间复杂度(数据结构)

本博客讲解算法的时间复杂度和空间复杂度的来源及定义,时间复杂度的表示及练习。空间复杂度的计算会在后续博客讲解 算法的复杂度 算法在编写成可执行程序后,运行时需要耗费时间资源和空间(内存)资源 。因此衡量一个算法的好坏,一般是从时…

Glip模型

Yolos 完全使用Transformer做目标检测 Detr 先使用CNN提取特征然后再使用transformerDetr和Yolos共同的缺点:需要事先知道所有的类别 Glip Zero-shot, 目标检测的类别可以不在训练类别中 目标框进行视觉编码,然后和文本进行匹配文本和视觉特征是通…

docker ENTRYPOINT [“sh“,“-c“,“java“,“-jar“,“Hello.jar“] 启动失败问题分析

因为没系统的学过linux语法,所以才会产生如下疑问。大佬请跳过。 问题:当在dockerfile里面配置 ENTRYPOINT ["sh","-c","java","-jar","Hello.jar"] ,启动对应容器时会无法正常运行&…

基于SpringBoot宠物领养系统的设计与实现(代码+数据库+文档)

** 🍅点赞收藏关注 → 私信领取本源代码、数据库🍅 本人在Java毕业设计领域有多年的经验,陆续会更新更多优质的Java实战项目,希望你能有所收获,少走一些弯路。🍅关注我不迷路🍅** 一、研究背景…

基于机器视觉的动态物体追踪研究与实现

目 录 摘 要 I Abstract II 引 言 1 1 相关技术 3 1.1 Python 3 1.2图像二值化 3 1.3 Opencv 3 1.4图像去噪 3 1.5本章小结 4 2 动态目标检测算法 5 2.1 背景差分法 5 2.2 帧差法 7 2.3 光流法 9 2.4 本章小结 10 3 动态目标跟踪算法 11 3.1 Mean Shift 11 3.2 Cam Shift 13 3…

微信小程序如何实现下拉刷新

1.首先在你需要实现下拉刷新页面的json文件中写入"enablePullDownRefresh": true。 2.在js文件的onPullDownRefresh() 事件中实现下拉刷新。 实现代码 onPullDownRefresh() {console.log(开始下拉刷新)wx.showNavigationBarLoading()//在标题栏中显示加载图标this.d…

Joe主题网站

一款博客网站源码 发现源码为大家内置了主题 清爽又强大真正的永久可用的一条源码,该版本为整合版本,内置了Joe主题,搭建后直接启用即可~ 安装环境要求: PHP 7.2 以上 MySQL, PostgreSQL, SQLite 任意一种数据库支持,…