什么是委托?我什么时候想使用它?

2023-11-26

在OOP中,提到了一个术语“委托”。这是如何在课堂上建模的?我在雅虎等网站上进行了搜索,但得到了代表们的链接。


想象一下你有课程Car and Engine:

public class Car {
   private Engine engine = new Engine(); //or inject it externally

   public void start() {
       engine.start();
   }
}

在这个例子中Car委托给底层Engine。汽车的使用者不能直接启动发动机(除非他是机械师)。但他可以告诉汽车启动,汽车反过来又告诉发动机启动。

每当您使用对象组合并且需要使用组合对象之一的方法时,您都希望使用它。在这种情况下,您创建一个委托给它的方法。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

什么是委托?我什么时候想使用它? 的相关文章

  • 棋子层次结构设计:继承与类型字段

    我有一个片段的基类 class piece 和一个包含派生对象的数组 piece board 8 8 优点 通过虚拟函数进行简洁的设计 缺点是 如果我必须在板上找到一块或比较一块 我必须恢复到动态铸造 或 typeid 它很丑陋 并且在发出
  • 在 Javascript 构造函数中引用实例变量

    我试图通过执行以下操作来维护对象的状态 obj function this foo undefined this changeState function function this foo bar This is contrived bu
  • 添加类方法后如何更新类的实例?

    我发现自己陷入了困境 我开发了一个类 然后创建了该类的一个实例 这些类通常会执行数据和统计操作 这些操作需要很长时间 有时需要 20 分钟 我将继续开发我的类 并向其中添加其他方法 现在 如何使用新方法更新以前的类实例而不重新初始化该类的旧
  • 如何使用工厂来创建使用策略模式的对象?

    假设我们的在线商店有一个简单的支付功能 我们希望使用不同的交易处理器来管理不同的交易 交易可以是付款或退款 交易处理器可以是 Paypal 或 Payplug 所以我们有以下课程 class PaymentTransaction imple
  • 正式协议对象有什么用

    我们可以在源代码中创建协议对象 但是正式的协议对象有什么用呢 Protocol myObj protocol protocolName 您可以使用它来检查对象是否符合协议 anotherObject conformsToProtocol m
  • 耦合、内聚和迪米特定律

    The 德墨忒耳定律 http en wikipedia org wiki Law of Demeter表示你应该只与你直接了解的对象交谈 也就是说 不要执行方法链接来与其他对象通信 当您这样做时 您正在与中间对象建立不适当的链接 不恰当地
  • 错误 - 仅返回类型不同的函数不能重载。由 小码哥发布于

    我正在尝试创建一个图书馆管理系统 我收到一些我不明白的错误 我在 Mac 操作系统中使用 Eclipse 我的主要代码是 include
  • Python 对象属性 - 访问方法

    假设我有一个具有某些属性的类 在 Pythonic OOP 中 如何访问这些属性是最好的 就像obj attr 或者也许编写 get 访问器 此类事物可接受的命名风格是什么 Edit 您能否详细说明使用单下划线或双前导下划线命名属性的最佳实
  • 这是一个不正确的警告吗?

    让我们看看我经常看到的这个代码模式 struct Foo template
  • 如何将一个窗格连接到另一个窗格

    如何将输出连接到paneWithList PaneWithList其上有一个监听器JList以便将所选行输出到控制台 我怎样才能将该输出定向到JTextPane关于输出 Could PaneWithList触发一个事件Main拿起 会属性更
  • SQL Server T-SQL 中的 REGEXP_LIKE 转换

    我在一份需要转换为 SQL Server 的旧报告中遇到了这一行 REGEXP LIKE examCodes learner code examCodes 是源 learner code 是模式 我知道 SQL Server 没有 REGE
  • 为什么json序列化器不符合多态性?

    我在 NET 4 5 Windows 应用商店应用程序中使用库存 JSON 序列化器 System Runtime Serialization Json DataContractJsonSerializer 我有一个由 API 提供商提供的
  • ASP.NET/ADO.NET:处理 .NET 对象内的许多数据库连接?

    我们有一个 NET 对象 它对数据库进行大量读 写操作 在该对象 或使用它的 ASP 页 的整个生命周期中 它可能会通过查询 更新来访问数据库 1 到 10 次 它不是在每次对象需要访问数据库时打开和关闭数据库连接 而是只是在实例化期间打开
  • 就MVC模式而言,Struts 2中使用的Action是什么?

    在Struts2中 控制器将请求分派给Action Action将其传递给后端逻辑 这可以看作是一个非常大的过程 model 处理请求 JSP代表视图 Struts2中如何定义Action 肯定是not一个看法 是控制器还是模型 Strut
  • Mootools 使用“extend”方法扩展“Function”类,导致 jQuery 无法使用

    Mootools 扩展了 Function 类 并在其中添加了一个名为 extend 的新方法 现在 jQuery 尝试使用 jQuery prototype extend 添加 扩展 功能 然而 由于 extend 已经是 jQuery
  • 服务层或存储库中的密码哈希等?

    作为 MVC 的最佳实践 在发送到数据库之前处理密码散列 加盐或数据格式化等事务的逻辑应该放在哪里 我读到存储库应该仅用于处理数据访问的逻辑 这是属于服务层的东西吗 控制器 这还重要吗 我倾向于将散列放在存储库层中 如果只是出于实际原因 即
  • 确定方法调用顺序的接口设计模式

    我想创建一个具有多种方法的 Java 接口 但我希望界面的用户只能按照我定义的顺序或顺序调用方法 例如buyTicket 不应在此之前调用reserveTicket 问 有没有设计模式或任何关于如何做到这一点的提示 我考虑过 A 接口被包装
  • 如何从类外部更改公共 R6 类方法?

    我希望能够在我的 R6 类中重新定义公共方法 以便它根据该类保存的数据类型进行更改 如下所示 library R6 Simple lt R6Class Simple public list dt mtcars my print functi
  • 从 python 中的类调用函数 - 不同的方式

    EDIT2 谢谢大家的帮助 编辑 添加 staticmethod后 它可以工作 但是我仍然想知道为什么我在这里遇到类型错误 我刚刚开始使用 OOPS 并且对它完全陌生 我有一个非常基本的问题 关于从类中调用函数的不同方式 我有一个 test
  • 业务代表与服务定位器

    Business Delegate 和 Service Locator 之间有什么区别 两者都负责封装查找和创建机制 如果 Business Delegate 使用 Service Locator 来隐藏查找和创建机制 那么 Busines

随机推荐

  • 如何在 Javascript 中以 hh:mm AM/PM 格式获取当前时间?

    我有一个 Javascript 需要以 HH MM AM PM 格式粘贴当前时间 有一个问题 我需要输入从现在起两小时后开始的时间 因此 例如 我需要输入晚上 9 23 而不是晚上 7 23 等等 我尝试做类似的事情 var dateFor
  • TensorFlow 中的硬限制/阈值激活函数

    我正在尝试实现一个基本的二进制霍普菲尔德网络在 TensorFlow 0 9 中 不幸的是 我很难让激活功能正常工作 我希望得到非常简单的If net i lt 0 output i 0 else output i 1但我尝试过的所有操作似
  • Oracle 看到的字符串的真实长度

    所以我试图将数据保存到 Oracle 数据库 我有一个字符串 V ste 某处的州名 当我对其执行 length 时 我得到 5 但是当我将其保存到数据库时 我得到 ORA 12899 value too large for column
  • 基于所选节点的 TreeViewer 上下文菜单 - SWT

    我需要在 Eclipse 插件项目中为 TreeViewer 创建一个上下文菜单 但是 菜单不应包含常量项目 它们应根据所选节点的类型而变化 例如 我的树查看器具有以下层次结构 Node A Node B Node C 对于节点 A 我想显
  • 在 while 循环中正确使用 BufferedReader.readLine()

    所以我在将文本文件读入程序时遇到问题 这是代码 try InputStream fis new FileInputStream targetsFile BufferedReader br new BufferedReader new Inp
  • 使用levenshtein距离计算两个完整文本的相似度[关闭]

    Closed 这个问题是无关 目前不接受答案 我有两个想要比较的文本文件 我所做的是 我把它们都分成了句子 我测量了一个文件中的每个句子与第二个文件中的每个句子之间的编辑距离 我想计算这两个文本文件之间的平均相似度 但是我很难提供任何有意义
  • XML 模式中的 mix="true" 和 xs:extension 的区别

    这两者之间的实际区别是什么
  • phpinfo() 从哪里获取它的信息?

    如果你运行一个phpinfo 它是否准确显示 php ini 中的内容 或者是否通过 php 使用类似方法动态更改设置ini set or via htaccess它们会显示在 phpinfo 中吗 phpinfo 表明 在 本地价值 列
  • java中获取默认网关

    我想使用 java 获取本地计算机的默认网关 我知道如何通过执行dos或shell命令来获取它 但是还有其他方法来获取吗 还需要获取主要和辅助 dns ip My way is try DatagramSocket s new Datagr
  • Python 的子进程模块从 Unix shell 返回不同的结果

    我正在尝试使用 python 获取目录中的 CSV 文件列表 这在 UNIX 中非常简单 ls l csv 而且 可以预见的是 我会在目录中获得以 csv 结尾的文件列表 但是 当我尝试使用 Subprocess 模块进行 Python 等
  • lambda 有不同的类型吗?

    每个 lambda 应该有一个唯一的未知类型 是否可以保证同一作用域中的两个 lambda 具有不同的类型 int main auto l1 auto l2 static assert std is same
  • Firebase Cloud Messaging:如何向所有用户发送数据消息? [复制]

    这个问题在这里已经有答案了 我想发送data消息发送至all users 是否可以以编程方式完成此操作 而不使用Firebase 通知控制台 控制台的问题在于表单开头的 消息文本 字段是强制性的 因此 即使我添加自定义数据键 值 也会有标准
  • 有没有办法指定 py2exe 的构建目录

    我可以设定最终的dist使用命令行进入 py2exe 目录 python setup py py2exe d my dist dir 但我似乎无法设置临时使用的文件build目录 我已经简单地查看了源代码 但除非我遗漏了一些东西 否则似乎没
  • 创建动态变量名称[重复]

    这个问题在这里已经有答案了 我们可以在C 中创建动态变量吗 我知道我的下面的代码抛出了错误并且编码非常糟糕 但是这段代码有一些小逻辑 比如创建动态变量 var name 0 for i 0 i lt 10 i 10 means grid l
  • 用jQuery同步跨子域POST请求

    我正在尝试执行跨域 POST 请求 但遇到了 或两处 困难 我无法在服务器上放置代理页面 所以这不是一个选项 我研究了 getJSON 它效果很好 只是我需要 POST 而不是 GET 是否有可能做到这一点 如果是not 有人可以向我解释
  • chrome.windows.onFocusChanged.addListener 不会在选项卡切换时触发

    我正在尝试获取所有事件 最大化 最大化等 我从这个链接中有一个合适的代码如何检测 Chrome 扩展中的最小化 最大化事件窗口 但是切换选项卡 使用 alt tab window chrome onFocusChanged 侦听器未触发时出
  • 不间断空格导致 Xcode 出现问题

    当我在 Xcode 中编码时 我常常会键入不间断空格 Option Space Option Shift Space 尤其是在方括号或大括号之前或之后 这会导致 Xcode 发出警告 invalid character in source
  • 如何在后台从 Java 代码运行命令行?

    我有以下行来运行批处理文件 Process process Runtime getRuntime exec cmd c start rake bat 但我希望它在后台运行而不向用户显示命令行 我怎样才能改变它来做到这一点 问题是命令窗口打开
  • PlacePicker 不选择材质主题

    我正在使用一个地点选择器来自 Google Play Services 的库启动了一个新的活动 新的活动 选择器有一个工具栏 操作栏 默认情况下没有样式 PlacePicker 文档指出 如果您使用材质主题在应用程序中设置自定义颜色 地点选
  • 什么是委托?我什么时候想使用它?

    在OOP中 提到了一个术语 委托 这是如何在课堂上建模的 我在雅虎等网站上进行了搜索 但得到了代表们的链接 想象一下你有课程Car and Engine public class Car private Engine engine new