Fake Objects

2023-11-12

Spring的创始人Rod Johnson关于伪对象:

Fake Objects: objects in appearance, but which don’t exhibit some of the characteristics of objects: identity, state, and behavior。

Let’s look at some common fake objects and why to avoid them if possible:
Transfer objects, often referred to as Data Transfer Objects (DTOs) or Value Objects. Transfer
objects are not true objects because they contain only state, without behavior. Transfer objects
are a necessary evil in distributed applications (although there’s an argument that this kind of
data should really be included in an XML structure rather than Java objects). But if we don’t
want a distributed architecture, they’re redundant and harmful, creating an unwelcome
impedance mismatch between business services and callers.
❑ Entity beans or other persistent objects generated from RDBMS tables. These reflect a relational,
rather than OO, model. They have a harmful effect on code that works with them, which
is forced to navigate relationships and cannot benefit from OO concepts such as polymorphism.
There’s also inadequate decoupling between business logic and persistent data representation.
Persistent objects in general that contain only getters and setters, without behavior. Such fake
objects force behavior that they should encapsulate to be moved into control classes such as session
beans. Not only is encapsulation violated, but the result tends to be verbose code in control
classes.

UI+BLL+DAL+Model 是当前最常用的企业级开发的三层架构。但通常BLL层弱化为控制部分,即业务对象只有行为无状态,而Model层弱化为数据库的持久化表示,即只有状态而无行为。DAL变为BLL和DB的中介,而媒介就是Model。

如何由伪对象过度到真正的OO? 创建真正的BO,即有行为又有状态,这样就取消了Model层。



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

Fake Objects 的相关文章

  • 【无监督】4、BYOL

    文章目录 一 背景和动机 二 方法 2 1 BYOL 网络结构 2 2 实现细节 三 效果 3 1 总体效果 3 2 和 SimCLR 的对比 四 BYOL 真的没有用到负样本吗 BN 之讨论 论文 Bootstrap Your Own L
  • xrd计算晶面间距_jade基本操作(6.残余应力计算)

    微信公众号试行乱序推送 为了不错过更新 请点击本页面最上方的 结构分析表征 进入公众号主页 点击右上角的三个小点点 在弹出的界面点击 设为星标 并在看完图文或视频后点击右下角的 在看 和 赞 本公众号以各类仪器的测试 分析教程 欢迎关注同名

随机推荐

  • 学习笔记(01):MySQL数据库从入门到搞定实战-DDL之数据库

    立即学习 https edu csdn net course play 27328 362512 utm source blogtoedu SQL 结构化查询语言 用于访问和操作数据库 主要包括数据定义 数据操纵 数据查询和数据控制 DDL
  • element-ui 关于日期范围选择控件,如何限制只能选择30天

    问题描述 element ui 日期选择器如何限制只能选择一个月 超过一个月不能选择 也就是在选定起始日期时 只能向后面选择30天 同时不能选择超过今天的日期 知识点 element ui日期选择组件地址 http element cn e
  • MAC 认证和 MAC 旁路认证

    一 MAC 认证原理 1 MAC认证是什么 MAC 认证 是指终端网络接入控制设备自动获取终端的 MAC 地址 作为接入网络的凭证发到RADIUS 服务器进行校验 MAC 认证是一种基于接口和 MAC 地址对用户的网络访问权限进行控制的认证
  • 【101】使用 nRF24L01 射频模块操控舵机云台

    Bill of Material 遥控器 9V 电池 x1 9V电池扣 x1 Arduino UNO x1 摇杆模块 x1 nRF24L01 射频通讯模块 x1 邦德线 面包板 云台端 9V 电池 x1 9V电池扣 x1 Arduino U
  • C#中Dictionary的用法

    转自 http www studyofnet com news 45 html 本文导读 在C 中 Dictionary提供快速的基于键值的元素查找 他的结构是这样的 Dictionary lt key value gt 当你有很多元素的时
  • QT_QML WiFi连接(1/2)(windows篇)

    目录 一 大概环境介绍 二 实现功能 代码 1 包含文件 结构体 变量定义 1 头文件 2 wifi信息结构体 3 连接过的WiFi信息结构体 4 变量 指针定义 5 定义的WiFi连接XML文件 A 有密码 B 无密码 2 获取范围内Wi
  • python+jieba分析唐诗三百首

    python jieba分析唐诗三百首 代码及源文件地址 poem 300 代码保证符合命名规范 遵循PEP8规则 导包顺序清晰 尽量做到复用性和不罗嗦 记得修改文件路径哟 如果有帮到您 还请给个评论或star 蟹蟹 1 题目描述 俗话说
  • 四种cast转换

    c 动态类型转换有四种const cast static cast dynamic cast reinterpreter cast 前面两个用的多 但是后面的针对其设计理念有许多其他的实现方法可达到同样的效果 1 const cast 用于
  • 三维数学(二)

    欧拉角 使用物体在三个旋转轴上的旋转角度来保存方位 API Transform eulerAngles 返回或设置物体的欧拉角 优点 1 仅使用三个数字表达方位 占用空间小 2 沿坐标轴旋转的单位为角度 符合人的思考方式 3 任意三个数字都
  • 【廖雪峰python入门笔记】list_按照索引访问

    1 按照索引访问list Python按照索引访问list 由于list是一个有序集合 所以 我们可以用一个list按分数从高到低表示出班里的3个同学 L Adam Lisa Bart 那我们如何从list中获取指定第 N 名的同学呢 方法
  • ubuntu小技巧27--基于dnsmasq快速搭建局域网dns服务器

    ubuntu小技巧27 基于dnsmasq快速搭建局域网dns服务器 1 介绍 2搭建dns服务器 2 1 搭建步骤 2 2 测试 3 注意事项 4 说明 1 介绍 DNS Domain Name Server 域名服务器 是进行域名 do
  • Kafka学习(三)——Java工具类、Springboot集成批量消费、SparkStreaming集成

    文章目录 前言 一 Java中工具类 1 添加maven依赖 2 消费者 KafkaConsumerTest 3 生产者 KafkaProducerTest 二 SpringBoot中使用 4 1 引入依赖 4 2 application
  • vim复制多行和删除多行的方法

    方法1 光标放到第6行 输入 2yy 光标放到第9行 输入 p 此方法适合复制少量行文本的情况 复制第6行 包括 下面的2行数据 放到第9行下面 方法2 命令行模式下输入 6 9 co 12 复制第6行到第9行之间的内容到第12行后面 方法
  • 泛微 E-Office文件上传漏洞复现(CVE-2023-2523、CVE-2023-2648)

    0x01 产品简介 泛微E Office是一款标准化的协同 OA 办公软件 泛微协同办公产品系列成员之一 实行通用化产品设计 充分贴合企业管理需求 本着简洁易用 高效智能的原则 为企业快速打造移动化 无纸化 数字化的办公平台 0x02 漏洞
  • Python 基础知识记录

    一 两个list第一个列表排序后 第二个列表根据第一个列表索引进行排序 x 2 1 4 5 6 0 y a b c d e f x sorted sorted x index sorted range len x key lambda k
  • QMessageBox的使用

    QMessageBox是Qt中常用的对话框类 用于显示消息 警告 错误等信息 常用的QMessageBox用法包括 1 显示信息框 QMessageBox information parent title text 2 显示警告框 QMes
  • 超实用!这是我见过最全面的python入门教程,新手小白不要错过

    Python 是一门开源免费 通用型的脚本编程语言 它上手简单 功能强大 坚持 极简主义 Python 类库 模块 极其丰富 这使得 Python 几乎无所不能 不管是传统的 Web 开发 PC 软件开发 Linux 运维 还是当下火热的机
  • Hello React (创建自己的第一个React 页面)

    Rract是啥 React 是用于构建用户界面的 JavaScript 库 构建用户界面 User Interface 对咱们前端来说 简单理解为 HTML 页面 javscrtipt库 不是框架 是库 react 全家桶才是框架 reac
  • 统计学习的基本概念和分类

    前言 一 统计学习的概念 1 统计学习应用领域 pic center 80 x80 2 统计学习的概念 统计学习是关于计算机基于数据构建概率统计模型并运用模型对数据进行预测与分析的一门学科 以计算机和网络为平台 以数据为研究对象 以预测和分
  • Fake Objects

    Spring的创始人Rod Johnson关于伪对象 Fake Objects objects in appearance but which don t exhibit some of the characteristics of obj