[Java]面向接口编程->委托方法
对象A把一件事委托给接口I 持有接口的引用允许赋值对象B实现了接口IA委托B执行代码当A调用接口I的方法传入B对象实际是B的代码在执行demo1、定义委托接口public interface PaymentDelegate { void onPaymentSuccess(String orderId,double amount); void onPaymentFailed(String orderId,String errorMessage); }2、定义委托方Apublic class CheckoutSystem{ private PaymentDelegate deltegate; // 接口引用 public void setDelegate(PaymentDelegate delegate){ //允许赋值 this.delegate delegate; } public void processPayment(String orderId,double amount,boolean isSuccess){ System.out.println(模拟订单收银:orderId...); if (delegate ! null){ if(isSuccess){ delegate.onPaymentSuccess(orderId,amount); }else{ // 触发委托方法 delegate.onPaymentFailed(orderId, 余额不足); } } } }3、定义受托方B// 订单系统实现了支付委托用来更新订单状态 public class OrderService implements PaymentDelegate { Override public void onPaymentSuccess(String orderId, double amount) { System.out.println(【订单系统】收到委托回调订单 orderId 支付成功金额: amount 元。正在修改订单状态为【已支付】...); } Override public void onPaymentFailed(String orderId, String errorMessage) { System.out.println(【订单系统】收到委托回调订单 orderId 支付失败原因: errorMessage 。正在记录异常日志...); } }4、测试运行public class Main { public static void main(String[] args) { CheckoutSystem checkout new CheckoutSystem(); OrderService orderService new OrderService(); // 绑定委托关系告诉收银台发生事情了找订单系统 checkout.setDelegate(orderService); // 模拟一笔成功的支付 checkout.processPayment(202606260001, 199.0, true); } }结论 如果不用委托 代码可能public void processPayment(...) { // 强耦合了特定的 Service OrderService orderService new OrderService(); orderService.updateStatus(); LogisticsService logisticsService new LogisticsService(); logisticsService.ship(); }使用委托方法 把改变类 变为改变接口属于面向接口变成 只需要实现接口 processPayment不需要做更多代码改动。

相关新闻

生成式引擎优化 GEO 的核心逻辑是什么

生成式引擎优化 GEO 的核心逻辑是什么

【摘要】GEO 优化的核心逻辑是适配生成式 AI 的答案生成机制,通过技术层面的结构化标记与内容层面的权威化建设,提升品牌信息的可引用性,使其成为 AI 回答用户问题时的优先参考信源。本文从 AI 答案生成机制、GEO 底层运行逻辑、核心评估维度…

2026/6/27 3:34:24阅读更多 →
切割矩形(递归)

切割矩形(递归)

小明有一些矩形的材料他要从这些矩形材料中切割出一些正方形。 当他面对一块矩形材料时,他总是从中间切割一刀,切出一块最大的正方形,剩下一块 矩形,然后再切割剩下的矩形材料,直到全部切为正方形为止。例如&#xff0…

2026/6/27 3:34:24阅读更多 →
69.Android系统源码-Android WebP图像编解码核心技术

69.Android系统源码-Android WebP图像编解码核心技术

Android WebP图像编解码核心技术 库路径:external/webp | 版本:libwebp v1.3.0 | 许可证:BSD | 代码规模:~59658行C代码 1. 核心问题 WebP 是 Google 在 2010 年推出的现代图像格式,旨在同时解决 JPEG(有损)和 PNG(无损)的局限性。在 Android 生态中,图像解码是系统…

2026/6/27 3:34:24阅读更多 →
02.西门子S7-200SMART V3.1安装教程(2025年保姆级超详解)【附安装包+PLC编程指南】

02.西门子S7-200SMART V3.1安装教程(2025年保姆级超详解)【附安装包+PLC编程指南】

文章目录前言西门子S7-200SMART V3.1 下载西门子S7-200SMART V3.1 安装教程三、软件功能测试西门子S7-200SMART V3.1入门教程:从安装到第一个PLC程序前言 西门子S7-200SMART系列在小型PLC市场里用得相当广泛,从单机控制到小型产线改造都能见到它的身影。…

2026/6/27 4:59:29阅读更多 →
D3.js 完整详细使用教程(从入门到实战)

D3.js 完整详细使用教程(从入门到实战)

一、D3.js 基础介绍 1. 什么是 D3.js D3(Data-Driven Documents,数据驱动文档)是基于 SVG、Canvas、HTML 的数据可视化 JS 库,核心思想:绑定数据 → 操作 DOM,把数据映射成图形元素(柱状图、折…

2026/6/27 4:59:29阅读更多 →
Claude Fable 5低调回归,性能遭质疑,GPT-5.6紧随其后将分批发布

Claude Fable 5低调回归,性能遭质疑,GPT-5.6紧随其后将分批发布

Claude Fable 5悄然回归手机端Claude Fable 5已在手机端Claude Code中重新现身,打开模型选项即可看到,且可进行交互,能用于SVG生成、git status和PR等操作。此次回归没有任何公告和新闻稿,是在经历近两周停产期后低调上线&#xf…

2026/6/27 4:59:29阅读更多 →
苹果微软产品涨价引发“内存末日”,普通人被挡在AI时代门外!

苹果微软产品涨价引发“内存末日”,普通人被挡在AI时代门外!

被卖爆的Mac,成了AI时代的硬通货昨晚,苹果中国官网上调多款产品价格,涉及Mac、iPad、HomePod、Apple TV及Vision Pro等产品线。从官网起售价来看,MacBook Neo 5499元起,MacBook Air 9999元起,MacBook Pro 1…

2026/6/27 4:59:29阅读更多 →
淘晶驰稳居行业第二,全尺寸性能领先

淘晶驰稳居行业第二,全尺寸性能领先

最近不少嵌入式同行问我,现在做项目选串口屏什么品牌靠谱?我做了6年工业人机界面方案开发,前前后后落地过30多个不同尺寸的串口屏项目,结合最新的行业公开数据、开发者社区调研和实际落地经验,今天给大家梳理2026年国内…

2026/6/27 4:59:29阅读更多 →
自己开店怎么弄扫码点餐,扫码点餐小程序,门店盈利翻倍的秘密武器

自己开店怎么弄扫码点餐,扫码点餐小程序,门店盈利翻倍的秘密武器

目录 低成本易操作轻松上手 杜绝错单漏单减少损耗 提升效率节省人工 自动锁客数据运营 稳步经营细水长流 老板们别再用老方法亏钱了 开实体店的朋友都知道,高峰期店员忙得脚打后脑勺,漏单错单家常便饭,工资涨得比利润快,最后…

2026/6/27 4:54:28阅读更多 →
【人工智能】一文搞定到底什么是智能体

【人工智能】一文搞定到底什么是智能体

【人工智能】一文搞定到底什么是智能体 一文搞定到底什么是智能体【人工智能】一文搞定到底什么是智能体一. LM,WorkFlow,Agent分别有什么么不同二. Agent的思考过程是怎样的三. Agent的五个核心部分1)LLM2)Prompt3)Me…

2026/6/26 11:03:22阅读更多 →
嵌入式GUI控件实战:ROTARY、SCROLLBAR、SLIDER原理与应用

嵌入式GUI控件实战:ROTARY、SCROLLBAR、SLIDER原理与应用

1. 嵌入式GUI控件:从原理到实战的深度解析在嵌入式系统开发中,图形用户界面(GUI)的设计与实现往往是项目从“能用”到“好用”的关键一跃。不同于资源充沛的PC或移动平台,嵌入式设备的GUI需要在有限的CPU性能、内存空间…

2026/6/26 4:15:25阅读更多 →
Google AI Studio 300美元额度的真相与实战指南

Google AI Studio 300美元额度的真相与实战指南

1. 这300美金不是“送钱”,而是Google埋下的第一道技术门槛 你看到标题里那个醒目的“$300美金”时,第一反应可能是:又一个免费额度?领完就完事?我亲手试过——这300美金根本不是红包,而是一张入场券&…

2026/6/26 9:29:01阅读更多 →
10分钟AI语音克隆与实时变声:Retrieval-based-Voice-Conversion-WebUI完整指南

10分钟AI语音克隆与实时变声:Retrieval-based-Voice-Conversion-WebUI完整指南

10分钟AI语音克隆与实时变声&#xff1a;Retrieval-based-Voice-Conversion-WebUI完整指南 【免费下载链接】Retrieval-based-Voice-Conversion-WebUI Easily train a good VC model with voice data < 10 mins! 项目地址: https://gitcode.com/GitHub_Trending/re/Retrie…

2026/6/27 0:04:03阅读更多 →
Layerdivider:3分钟AI智能分层,彻底告别手动抠图时代

Layerdivider:3分钟AI智能分层,彻底告别手动抠图时代

Layerdivider&#xff1a;3分钟AI智能分层&#xff0c;彻底告别手动抠图时代 【免费下载链接】layerdivider A tool to divide a single illustration into a layered structure. 项目地址: https://gitcode.com/gh_mirrors/la/layerdivider 还在为复杂的图像分层工作烦…

2026/6/27 0:04:03阅读更多 →
Tomcat中X-Frame-Options配置实战:防御点击劫持的四种方法与最佳实践

Tomcat中X-Frame-Options配置实战:防御点击劫持的四种方法与最佳实践

1. 项目概述&#xff1a;为什么X-Frame-Options是Web安全的“防盗门”&#xff1f;最近在排查一个老项目的安全审计报告时&#xff0c;又被提到了“点击劫持”风险&#xff0c;矛头直指缺失的X-Frame-Options响应头。这已经不是第一次了&#xff0c;很多开发团队&#xff0c;尤…

2026/6/27 0:04:03阅读更多 →