当前位置: 首页 > news >正文

设计模式8:代理模式-静态代理

我尝试在JDK、Android SDK和一些出名的库中,寻找静态代理的源码,没能找到。如果有读者发现,欢迎评论或者私信我。

本文目录

  • 静态代理的实例
      • 1. 售票代理
      • 2. 明星代理

静态代理的实例

1. 售票代理

售票服务

public interface TicketService {  //售票  public void sellTicket();  //问询  public void inquire();  //退票  public void withdraw();  
}

站点售票

public class Station implements TicketService {  @Override  public void sellTicket() {  System.out.println("\n\t售票.....\n");  }  @Override  public void inquire() {  System.out.println("\n\t问询。。。。\n");  }  @Override  public void withdraw() {  System.out.println("\n\t退票......\n");  }  }

代理网点售票

public class StationProxy implements TicketService {  private Station station;  public StationProxy(Station station){  this.station = station;  }  @Override  public void sellTicket() {  // 1.做真正业务前,提示信息  this.showAlertInfo("××××您正在使用车票代售点进行购票,每张票将会收取5元手续费!××××");  // 2.调用真实业务逻辑  station.sellTicket();  // 3.后处理  this.takeHandlingFee();  this.showAlertInfo("××××欢迎您的光临,再见!××××\n");  }  @Override  public void inquire() {  // 1.做真正业务前,提示信息  this.showAlertInfo("××××欢迎光临本代售点,问询服务不会收取任何费用,本问询信息仅供参考,具体信息以车站真实数据为准!××××");  // 2.调用真实逻辑  station.inquire();  // 3。后处理  this.showAlertInfo("××××欢迎您的光临,再见!××××\n");  }  @Override  public void withdraw() {  // 1.真正业务前处理  this.showAlertInfo("××××欢迎光临本代售点,退票除了扣除票额的20%外,本代理处额外加收2元手续费!××××");  // 2.调用真正业务逻辑  station.withdraw();  // 3.后处理  this.takeHandlingFee();  }  /* * 展示额外信息 */  private void showAlertInfo(String info) {  System.out.println(info);  }  /* * 收取手续费 */  private void takeHandlingFee() {  System.out.println("收取手续费,打印发票。。。。。\n");  }  }

2. 明星代理

public interface IStar {public abstract void sing(double money);
}public class StarImpl implements IStar {public void sing(double money) {System.out.println("唱歌,收入" + money + "元");}
}//经纪人
public class StarProxy implements IStar {private StarImpl star = new StarImpl();public void sing(double money) {System.out.println("请先预约时间");System.out.println("沟通出场费用");if (money < 100000) {System.out.println("对不起,出场费10w万以内不受理");return;}System.out.println("经纪人抽取了" + money * 0.2 + "元代理费用");star.sing(money * 0.8);}
}//测试
public class ProxyDemo {public static void main(String[] args) {StarProxy sg = new StarProxy();sg.sing(200000);}
}

相关文章:

设计模式8:代理模式-静态代理

我尝试在JDK、Android SDK和一些出名的库中&#xff0c;寻找静态代理的源码&#xff0c;没能找到。如果有读者发现&#xff0c;欢迎评论或者私信我。 本文目录 静态代理的实例1. 售票代理2. 明星代理 静态代理的实例 1. 售票代理 售票服务 public interface TicketService {…...

运动耳机哪款好用、适合运动的耳机推荐

如今&#xff0c;蓝牙耳机不仅是手机的最佳伴侣&#xff0c;也成为了运动爱好者的必备装备。但是&#xff0c;在如此众多的蓝牙耳机中&#xff0c;你是否对选购感到困惑呢&#xff1f;实际上&#xff0c;选择适合运动的蓝牙耳机需要考虑许多因素&#xff0c;如舒适度、稳固性、…...

页面滑动到可视区域加载更多内容思维流程

页面滑动到可视区域加载更多内容思维流程...

Java Word转PDF(直接转和以图片形式转)、PDF转图片、图片转PDF

在淘宝上找了一家写代码的店铺写了一个工具类&#xff0c;再参考网上的代码&#xff0c;改了改 用到的类库&#xff1a; <!-- https://mvnrepository.com/artifact/org.apache.pdfbox/fontbox --><!--word转pdf--><dependency><groupId>com.documents4…...

dockerfile编写LNMP

目录 1. 项目环境 2. 服务器环境 二、部署nginx&#xff08;容器IP为192.168.158.26&#xff09; 1、整个Dockerfile文件内容 ​编辑 2、配置nginx.conf文件 3、构建镜像 三、部署mysql 1、整个Docker文件内容 3、生成镜像 4、启动镜像容器 5、验证mysql 四、PHP部署 1…...

websocket + stomp + sockjs学习

文章目录 学习链接后台代码引入依赖application.ymlWebSocketConfigPrivateControllerWebSocketService WebSocketEventListenerCorsFilter 前端代码Room.vue 学习链接 WebSocket入门教程示例代码&#xff0c;代码地址已fork至本地gitee&#xff0c;原github代码地址&#xff…...

ApplicationListener , @EventListener 和 CommandLineRunner 启动顺序验证

一. 背景 排查线上问题, 发现一个重要功能的全局锁线程启动延迟很高. 服务启动40分钟之后, 才能拿到锁. 排查之后发现原因是因为代码引入了高优先级的ApplicationListener代码, 导致全局锁线程启动延迟. 二. 结论 启动顺序从高到底依次为: ApplicationListener , EventListe…...

网络编程基础(1)

目录 网络编程解决是跨主机的进程间通讯 1、网络 2、互联网 3、ip地址 &#xff08;1&#xff09;ipv4: &#xff08;2&#xff09;ipV6:1 &#xff08;3&#xff09;IP地址的组成&#xff1a; (4)Linux查看IP地址&#xff1a;ifconfig 4、mac地址 5、ping Ip地址 6…...

Linux驱动开发(Day4)

思维导图&#xff1a; 字符设备驱动分步注册&#xff1a;...

LVS负载均衡群集部署(LVS-NAT模型实例)

一、集群 1.1集群的含义 Cluster&#xff0c;集群、群集,为解决某个特定问题将多台计算机组合起来形成的单个系统。 由多台主机构成&#xff0c;但对外只表现为一个整体。 1.2群集的三种类型 1.2.1负载均衡群集 LB&#xff1a; Load Balancing&#xff0c;负载均衡&#x…...

【仿写tomcat】五、响应静态资源(访问html页面)、路由支持以及多线程改进

访问html页面 如果我们想访问html页面其实就是将本地的html文件以流的方式响应给前端即可&#xff0c;下面我们对HttpResponseServlet这个类做一些改造 package com.tomcatServer.domain;import com.tomcatServer.utils.ScanUtil;import java.io.IOException; import java.io…...

stm32单片机/51单片机蜂鸣器不响(proteus模拟)

蜂鸣器不发生原因就1个&#xff1a;电压不够 所以需要提高蜂鸣器2端的电压&#xff1a;可以采用的方法有&#xff1a; 1提高蜂鸣器电阻&#xff0c;这样根据分压原理&#xff0c;可以提升蜂鸣器2段电压 2更改蜂鸣器的工作电压为更小的值&#xff0c;这个可以通过在proteus内…...

BERT、ERNIE、Grover、XLNet、GPT、MASS、UniLM、ELECTRA、RoBERTa、T5、C4

BERT、ERNIE、Grover、XLNet、GPT、MASS、UniLM、ELECTRA、RoBERTa、T5、C4 ELMOBERTERNIE![在这里插入图片描述](https://img-blog.csdnimg.cn/274e31d0f8274c748d05abe2ec65fc73.png)GroverXLNetGPTMASSUniLMELECTRARoBERTaT5C4ELMO BERT...

主机防护的重要性和方式

01 主机防护的重要性 主机防护是网络安全的重要组成部分。在互联网时代&#xff0c;网络攻击成为了一种常见的威胁&#xff0c;而主机防护则是保护计算机系统免受网络攻击的重要手段。 主机防护可以防范各种网络攻击&#xff0c;如病毒、木马、黑客攻击等&#xff0c;从而保…...

聚观早报 | 抢先体验阿维塔11座舱;本田和讴歌采用NACS充电标准

【聚观365】8月21日消息 抢先体验阿维塔11鸿蒙座舱 本田和讴歌采用特斯拉NACS充电标准 华为秋季新品发布会将于9月12日举行 iQOO Z8即将到来 三星Galaxy S24系列外观或更改 抢先体验阿维塔11鸿蒙座舱 当前&#xff0c;智能座舱成了各大巨头跑马圈地的重要领域。根据毕马威…...

思科计算机网络答案(包含第1~11章节)

第一章 1.在以下哪个场景中推荐使用 WISP? 选择一项: A.城市里的网吧 B.没有有线宽带接入的农村地区的农场 C.任何有多个无线设备的家庭 D.通过有线连接访问 Internet 的大厦公寓 2.一位员工希望以尽可能最安全的方式远程访问公司网络。 下列哪种网络特征将允许员工获得对…...

所见即所得,「Paraverse平行云」助力万间打造智能建造新图景

在城市建设行业中&#xff0c;数字化逐渐成为其主导力量。 新一代信息基础设施建设也迎来了新的里程碑。数据显示&#xff0c;截至今年&#xff0c;我国已全面推进城市信息模型&#xff08;CIM&#xff09;基础平台建设&#xff0c;为城市规划、建设管理提供了多场景应用的强大…...

AI图片处理功能演示

例如&#xff0c;这是一张不错的图片&#xff0c;但是有3只手。 我们可以选择有问题的区域&#xff0c;然后要求 niji 进行重新绘制。 根据我们选择的区域&#xff0c;我们可以以不同的方式修复结果。 创意修复 修复并不仅限于纠正错误。我们可以要求 niji 添加额外的元素&…...

CentOS系统环境搭建(六)——使用docker-compose安装redis

centos系统环境搭建专栏&#x1f517;点击跳转 关于Docker-compose安装请看CentOS系统环境搭建&#xff08;三&#xff09;——Centos7安装Docker&Docker Compose&#xff0c;该文章同样收录于centos系统环境搭建专栏。 Docker-compose安装redis 文章目录 Docker-compose安…...

个人论坛项目测试报告

目录 0.项目概述及部分测试用例展示 以下是部分测试用例&#xff1a; 进行一般的性能测试性能测试 1.摘要及版本修订记录 2.功能介绍 3.测试范围 3.1.功能性 3.2.可靠性 3.3.易用性 4.测试资源 4.1.人员介绍 4.2.测试环境 4.2.测试工具 5.测试策略 5.2.功能测试…...

Java开发者收藏 | 你的经验不是负担,而是转型AI应用开发的加速器!

本文为Java开发者提供了清晰的AI应用开发转型路径。强调Java后端经验在AI领域是宝贵财富而非负担&#xff0c;并介绍了拥抱AI的优势。文章提出了分阶段学习路线&#xff0c;涵盖基础概念、框架选型&#xff08;Spring AI、LangChain4j、Spring AI Alibaba&#xff09;、可视化工…...

gogoclaw:基于文件与技能的自主智能体运行时设计与实践

1. 项目概述&#xff1a;一个以文件为基石的自主智能体运行时如果你和我一样&#xff0c;对市面上那些“黑盒”式的AI智能体框架感到厌倦&#xff0c;总觉得它们把太多逻辑和状态藏在运行时深处&#xff0c;调试和扩展起来像在拆盲盒&#xff0c;那么gogoclaw这个项目可能会让你…...

Windows风扇控制终极解决方案:FanControl深度配置指南

Windows风扇控制终极解决方案&#xff1a;FanControl深度配置指南 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/GitHub_Trending/fa…...

信发系统-排版/发布 配置操作教程-智慧大屏幕—东方仙盟

政务大屏幕节目管理-选择系统模板选择对应行业选择适合的模板选中你的节目点击设计设计节目直接管理/上传 资源&#xff1a;图片/视频/网页/文字/文档手指/鼠标选中显示区域上传资源&#xff0c;在右侧点击上传从资源库选择图片选择历史素材上传网站选中网页区域点击上传配置文…...

第57篇:Vibe Coding时代:LangGraph + 代码所有者规则实战,解决 Agent 修改核心模块无人负责的问题

第57篇:Vibe Coding时代:LangGraph + 代码所有者规则实战,解决 Agent 修改核心模块无人负责的问题 一、问题场景:Agent 修改了核心文件,但没有找到该找谁审 在团队项目中,不同模块通常有不同负责人: auth 模块:安全团队 payment 模块:支付团队 database 模块:平台团…...

上古卷轴5天际整合包下载最新全热门MOD整合(画质+人物+功能+场景全美化)下载分享

一、整合包基础概况 新手向懒人专属整合资源&#xff0c;适配电脑Windows系统。整合包集成多款热门优质MOD&#xff0c;无需玩家单独下载模组&#xff0c;整合包整体兼容性强&#xff0c;适配主流家用电脑&#xff0c;官方提前做好模组适配优化&#xff0c;规避多数模组冲突问…...

AAAI‘2026 模型记错了,检索也救不了?KG+TruthfulRAG想解决这个死结

背景介绍 近年来&#xff0c;大语言模型&#xff08;LLM&#xff09;在生成与理解任务上表现突出&#xff0c;但其内部“参数化知识”具有静态、滞后的特点&#xff1a; 面对时效性知识、专业知识、隐私知识等&#xff0c;模型可能缺乏覆盖&#xff1b;即便检索增强生成&#…...

如何自定义查询历史记录面板的展示风格_时间轴样式设计

...

从业者必看:医药资质认证服务核心知识梳理

如果你是初创医疗器械贸易商创始人、医美诊所创业者、连锁药店负责人或是医药电商运营人员&#xff0c;正面临缺证无法入驻平台、自行办理流程繁琐反复被驳回、赶大促节点急需下证等问题&#xff0c;想要了解医药资质认证服务相关内容&#xff0c;这篇科普内容会为你梳理清楚全…...

终极ROFL播放器指南:如何免费快速解锁英雄联盟回放文件分析

终极ROFL播放器指南&#xff1a;如何免费快速解锁英雄联盟回放文件分析 【免费下载链接】ROFL-Player (No longer supported) One stop shop utility for viewing League of Legends replays! 项目地址: https://gitcode.com/gh_mirrors/ro/ROFL-Player 还在为无法查看英…...