标签: 封装

访问修饰符

面向对象语言将程序划分为称为类的模块。每个类都包含特性,这些特性由数据(字段)和方法组成。(并非所有语言都使用这些术语,但为了便于理解,我们将使用它们。)语言对其他类可以访问类的哪些特性有各种规则,这些规则通常基于适用于类的访问修饰符。

作者:Martin Fowler

2003年5月13日

阅读更多…

博客

封装 语言特性

设计继承

面向对象领域中持续时间最长的争论之一是开放继承和设计继承之间的争论。设计继承的原则可以用Josh Bloch的话来概括:“为继承而设计和编写文档,否则就禁止它”。使用这种方法,您需要注意决定哪些方法可以继承,并密封其他方法以防止它们被覆盖。

作者:Martin Fowler

2006年10月6日

阅读更多…

博客

封装 API设计

嵌入式文档

在服务器之间流动JSON数据结构是我最近经常看到的事情。JSON文档可以直接持久化,可以使用聚合导向数据库或关系数据库中的序列化LOB。JSON文档也可以直接提供给Web浏览器,或用于将数据传输到服务器端页面渲染器。当以这种方式使用JSON时,我听到人们说使用面向对象语言会碍事,因为JSON需要被转换为对象,然后再被渲染出来——浪费了编程工作量。我同意关于浪费的观点,但我认为这不是对象的问题,而是对封装理解的失败。

作者:Martin Fowler

2013年6月4日

阅读更多…

博客

NoSQL 封装 对象协作设计

封装集合

如果您学习面向对象设计,您很快就会了解到封装数据非常重要。最简单的封装形式是使用访问器(获取和设置方法)或属性——如果您的语言支持的话。(有些甚至在类中执行此操作——自我封装

作者:Martin Fowler

2004年8月3日

阅读更多…

博客

封装

函数作为对象

在编程中,对象的根本概念是数据和行为的捆绑。这在编写一组相关函数时提供了一个通用的数据上下文。它还提供了一个操作数据的接口,允许对象控制对该数据的访问,从而更容易支持派生数据并防止对数据进行无效修改。许多语言都提供了显式语法来定义类,这些类充当对象的定义。但是,如果您使用的语言具有一流的函数和闭包,则可以使用这些结构来使用函数作为对象模式(最初由Eugene Wallingford描述)创建对象。

作者:Martin Fowler

2017年2月13日

阅读更多…

博客

封装 语言特性 对象协作设计

Getter消除器

当他们看到一个getter方法时,你可以通过他们嘴角左侧的抽搐来识别他们,他们会迅速地拔出他们的战斧,并发出一声满意的叫喊,因为另一个getter被无情地从一个类中砍了下来,这个类立即在男子气概的Getter消除器的脚下欣喜若狂地昏厥过去。

作者:Martin Fowler

2006年2月22日

阅读更多…

博客

封装 API设计 对象协作设计

可观察状态

当人们说一个方法不会改变对象的 observable 状态时,是什么意思?

作者:Martin Fowler

2006年1月5日

阅读更多…

博客

封装

开放继承

这与设计继承的态度相反。开放继承的支持者不希望通过密封他们的类或做任何其他事情来阻止人们继承类。

作者:Martin Fowler

2006年8月21日

阅读更多…

博客

封装 API设计

页面对象

当您针对网页编写测试时,您需要引用该网页中的元素,以便单击链接并确定显示的内容。但是,如果您编写的测试直接操作HTML元素,那么您的测试将很容易受到UI更改的影响。页面对象使用特定于应用程序的API包装HTML页面或片段,允许您在不深入HTML的情况下操作页面元素。

作者:Martin Fowler

2013年9月10日

阅读更多…

博客

测试 封装 Web开发

表示域数据分层

对信息丰富的程序进行模块化的最常见方法之一是将其分为三大层:表示层(UI)、域逻辑层(又称业务逻辑层)和数据访问层。因此,您经常会看到Web应用程序被分为Web层、业务逻辑层和数据访问层,Web层负责处理HTTP请求和渲染HTML,业务逻辑层包含验证和计算,数据访问层负责解决如何在数据库或远程服务中管理持久性数据。

作者:Martin Fowler

2015年8月26日

阅读更多…

博客

团队组织 数据库 封装 应用程序架构 Web开发

受保护数据

在我的类中使用protected访问修饰符来处理数据是好的OO设计吗?

作者:Martin Fowler

2003年5月14日

阅读更多…

博客

封装 语言特性

公共C#字段

当我第一次接触C#时,我从一开始就喜欢上了属性的概念。C++/Java中的getX和setX约定对我来说总是显得有点愚蠢,写成obj.X = other.X要自然得多。提供一个带有get和set方法的属性,将一个常见的约定变成了该语言自然支持的特性。

作者:Martin Fowler

2004年2月4日

阅读更多…

博客

封装 语言特性

已发布接口

已发布接口是我使用的一个术语(首先是在重构中),指的是在定义它的代码库之外使用的类接口。因此,它比Java中的public意味着更多,甚至比C#中的非内部public意味着更多。在为IEEE软件撰写的专栏文章中,我认为已发布和公共之间的区别实际上比公共和私有之间的区别更重要。

作者:Martin Fowler

2003年12月26日

阅读更多…

博客

封装 语言特性 应用程序架构 API设计

密封

密封方法或类会阻止子类覆盖它。

作者:Martin Fowler

2005年8月12日

阅读更多…

博客

封装 API设计

自我封装

数据封装是面向对象风格的核心原则。这意味着对象的字段不应公开,而所有来自对象外部的访问都应通过访问器方法(getter和setter)进行。有些语言允许公开访问字段,但我们通常告诫程序员不要这样做。自我封装更进了一步,它表明对数据字段的所有内部访问也应该通过访问器方法进行。只有访问器方法才能触碰数据值本身。如果数据字段没有暴露给外部,这意味着要添加额外的私有访问器。

作者:Martin Fowler

2017年3月9日

阅读更多…

博客

封装

软件组件

自从我进入这个行业以来,将软件开发从费力地编写代码转变为通过简单地组装组件来构建强大的系统的想法一直是一个目标。这是一个有时可以看到但从未真正实现的目标——尽管许多技术都悬挂着工业重用的诱人前景。

作者:Martin Fowler

2015年9月13日

阅读更多…

博客

团队组织 封装 应用程序架构

告诉,不要询问

告诉,不要询问是一条原则,它可以帮助人们记住,面向对象是关于将数据与其操作函数捆绑在一起的。它提醒我们,与其向对象询问数据并根据这些数据采取行动,不如告诉对象该做什么。这鼓励将行为移动到对象中,以与数据保持一致。

作者:Martin Fowler

2013年9月5日

阅读更多…

博客

封装 API设计 对象协作设计

统一访问原则

模块提供的所有服务都应该通过统一的表示法来访问,这种表示法不会泄露它们是通过存储还是通过计算来实现的。

——Bertrand Meyer

Bertrand Meyer在他极具影响力的著作《面向对象的软件构建》中提出了这一原则。

该原则的要点是,如果您有一个person对象,并且您询问它的年龄,那么无论年龄是对象的存储字段还是计算值,您都应该使用相同的表示法。这实际上意味着person的客户端不应该知道也不应该关心年龄是存储的还是计算的。

作者:Martin Fowler

2011年4月20日

阅读更多…

博客

封装 语言特性 API设计 对象协作设计


所有标签

API 设计 · 敏捷 · 敏捷实施 · 分析模式 · 应用程序架构 · 应用程序集成 · 不好的事情 · 棋盘游戏 · 构建脚本 · 认证 · 协作 · 计算机历史 · 会议小组 · 会议 · 持续交付 · 新冠肺炎 · 数据分析 · 数据库 · 设计 · 词典 · 分布式计算杂志 · 娱乐 · 多样性 · 文档 · 领域驱动设计 · 领域特定语言 · 家庭 · 封装 · 企业架构 · 估算 · 事件架构 · 演进式设计 · 经验报告 · 说明性架构 · 极限编程 · 前端 · 小工具 · 生成式人工智能 · IEEE 软件 · 信息卡 · 互联网文化 · 访谈 · 语言特性 · 语言工作台 · 精益 · 遗留系统改造 · 法律 · 指标 · 微服务 · 移动 · 非关系型数据库 · 对象协作设计 · 解析器生成器 · 摄影 · 平台 · 播客 · 热门 · 演示技巧 · 隐私 · 流程理论 · 生产力 · 编程环境 · 编程风格 · 项目计划 · 招聘 · 重构 · 重构边界 · 需求分析 · Ruby · 安全 · 演讲视频 · 团队环境 · 团队组织 · 技术债务 · 技术领导力 · 测试类别 · 测试 · ThoughtWorks · 工具 · 旅行 · UML · 版本控制 · Web 开发 · Web 服务 · 网站 · 写作

2024 · 2023 · 2022 · 2021 · 2020 · 2019 · 2018 · 2017 · 2016 · 2015 · 2014 · 2013 · 2012 · 2011 · 2010 · 2009 · 2008 · 2007 · 2006 · 2005 · 2004 · 2003 · 2002 · 2001 · 2000 · 1999 · 1998 · 1997 · 1996

所有内容