“对象处于不一致状态”的含义

2023-12-30

我曾多次遇到过,以特定方式对对象进行编码可能会导致其处于不一致的状态。一个例子是这样的question https://stackoverflow.com/questions/4768349/builder-vs-decorator-pattern.

从答案来看:使用装饰器模式来构造对象是不好的,因为它会使对象处于不一致的状态。

谁能用一个例子向我解释一下,处于不一致状态的对象真正意味着什么?


考虑下面的类,它是装饰器类InputStream。这里的close()方法未实现。 现在,如果我创建此类的对象并调用close()对此,我的假设是流已关闭,但实际上,由于方法实施不完整,它并未关闭close()在装饰器类中。

 public class UnClosableDecorator extends InputStream {

    private final InputStream inputStream;

    public UnClosableDecorator(InputStream inputStream) {
        this.inputStream = inputStream;
    }

    @Override
    public int read() throws IOException {
        return inputStream.read();
    }

    @Override
    public int read(byte[] b) throws IOException {
        return inputStream.read(b);
    }

    @Override
    public int read(byte[] b, int off, int len) throws IOException {
        return inputStream.read(b, off, len);
    }

    @Override
    public long skip(long n) throws IOException {
        return inputStream.skip(n);
    }

    @Override
    public int available() throws IOException {
        return inputStream.available();
    }

    @Override
    public synchronized void mark(int readlimit) {
        inputStream.mark(readlimit);
    }

    @Override
    public synchronized void reset() throws IOException {
        inputStream.reset();
    }

    @Override
    public boolean markSupported() {
        return inputStream.markSupported();
    }

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

“对象处于不一致状态”的含义 的相关文章

随机推荐

  • python 函数内部定义的 locals() 不起作用[重复]

    这个问题在这里已经有答案了 考虑下面的代码 dct one 2 3 现在下面的工作 for key val in dct items locals key val print one Result 2 3 但是当我使用我真正想要的功能时却不
  • hook脚本中修改svn下的文件

    修改特定文件的最佳方法是什么 如果有 under我们在 post commit 中的存储库hook 例如 我想将校验和行附加到 somefile conf 文件 您可能想阅读本章 http svnbook red bean com en 1
  • ASP.NET - 存储临时文件

    我有一个网络表单 允许用户在我们的系统中开票时上传文件 上传是使用 ajax控件工具包 asyncFileUpload控件完成的 这个想法是将文件保存到临时目录中 并且仅在用户点击 提交 按钮时将它们保存到永久位置 我希望能够删除不再相关的
  • 是否可以通过 adb shell 启动活动并接收其响应? [复制]

    这个问题在这里已经有答案了 我知道你可以从任何应用程序启动任何导出的活动 via adb使用以下命令 am start n com myapp test TestActivity 使用 am start 命令还可以向活动发送额外的数据 我知
  • 无法解析程序集:“Java.Interop”

    当我尝试构建应用程序时 出现以下异常 C Program Files x86 MSBuild Xamarin iOS Xamarin iOS Common targets 681 3 错误 无法解析程序集 Java Interop 版本 0
  • 我需要将每 4 个 WordPress 帖子包装在一个 div 中

    我需要一个 div 来包装 WordPress 循环中的每四个帖子 所以它会像 div four posts div div four posts div 我当前的代码是这样的 div class wine section div
  • 从 C# 中的字符串中提取基本 URl?

    我目前正在开发一个使用 NET 1 1 框架的项目 但我陷入了困境 我有一个像 http www example com mypage default aspx http www example com mypage default asp
  • 访问 cpp-netlib http 服务器中的请求标头

    我已经开始使用开发 HTTP 服务器cpp netlib 稳定版本 0 10 1 并且从可用文档中我不确定如何访问服务器处理程序中的 HTTP 请求标头 我知道可以使用包装器来完成 如下所示 void operator async serv
  • 如何将特定类型的数组存储到我的设置文件中?

    由于某种原因 我似乎无法将我的类的数组存储到设置中 这是代码 var newLink new Link Properties Settings Default Links new ArrayList Properties Settings
  • 如何像 IN 语句一样使用 PowershellWhere-Object

    我有以下有效的代码 foreach db in svr Databases where object name eq testDB or name eq master or name eq model or name eq msdb wri
  • Python - 从网站抓取数据时重音字符的问题

    我是 Nicola 一名 Python 新用户 没有真正的计算机编程背景 因此 我确实需要一些帮助来解决我遇到的问题 我编写了一段代码来从此网页抓取数据 基本上 我的代码的目标是从页面中的所有表中抓取数据并将它们写入 txt 文件中 这里我
  • Amazon EC2 通过优雅关闭自动缩小规模?

    我们正在考虑使用 EC2 自动扩展来应对负载峰值 在我们的例子中 我们希望根据 SQS 队列大小来扩展实例 然后随着队列大小重新受到控制而缩小实例 每条 SQS 消息都定义了一个可能长时间运行的作业 有时每条消息长达 20 分钟 必须在实例
  • 使用 moment.js 获取该月的第一个工作日

    我有一些代码使用 moment js 这是一个要求 获取该月的第一个工作日 如下所示 dateStart function var first moment startOf month switch first day case 6 ret
  • 如何将 /etc/resolv.conf 下的自定义名称服务器添加到 pod 中?

    哪个服务在 pod 的 etc resolv conf 下分配名称服务器 通常应该从主机 etc resolv conf 获取 我在 pod 的 etc resolv conf 下看到不同的名称服务器 kbernetes 上是否有任何配置
  • Pandas / xlsxwriter writer.close() 没有完全关闭excel文件

    我试图在使用 python 脚本创建 Excel 文件后手动修改它 不幸的是 如果脚本仍在运行 则在尝试使用相同名称保存脚本时会出现共享文件冲突错误消息 代码中一切都运行顺利 文件已创建 填充并保存 我可以打开它并对其进行处理 但如果脚本仍
  • symfony 5.1 捆绑迁移导致没有要处理的映射信息

    我正在 DDD 下开发 Symfony 5 1 项目 因此我对所有默认文件夹进行了一些更改 我在 src 文件夹中有 2 个包 目前我只在其中一个包中有实体 我使用命令 make user 生成了实体用户及其存储库 然后移动文件并更改命名空
  • VBA 高度持久的运行时错误 91

    我遇到的问题是 当我尝试启动宏时 我不断收到错误 代码是 Sub MAGAZINE iiii Dim IE As InternetExplorer MODIFICATION Dim els el colDocLinks As New Col
  • 请问在函数内部使用 func() 在 python 中意味着什么

    请问在函数内部使用 func 在 python 中意味着什么 例如下面的代码 def identity decorator func def wrapper func return wrapper func是赋予函数的参数identity
  • Safari 移动设备忽略阻止默认设置

    我在用e preventdefault 在谷歌地图信息窗口中的链接上 它在桌面上按预期工作 其中链接不访问href但在 Safari 上 它似乎会忽略它并访问该链接 就好像没有加载 JavaScript 一样 它显然正在加载 JavaScr
  • “对象处于不一致状态”的含义

    我曾多次遇到过 以特定方式对对象进行编码可能会导致其处于不一致的状态 一个例子是这样的question https stackoverflow com questions 4768349 builder vs decorator patte