标记:封装
访问修饰符
面向对象语言将程序划分为称为类的模块。每个类都包含由数据(字段)和方法组成的特性。(并不是所有的语言都使用这些术语,但它们会这样做。)对于哪些类可以访问类的特性,语言有各种各样的规则,这些规则通常基于应用于类的访问修饰符。
设计的继承
在面向对象的圈子里,一个持续时间最长的争论是OpenInheritance和设计继承。设计继承的原则最好的总结是乔什•布洛赫:“设计和文件为继承或禁止它”。使用这种方法,您需要小心地决定哪些方法可以继承和密封其他人阻止他们被覆盖。
嵌入的文件
最近我在服务器中流动JSON数据结构的情况越来越多。JSON文档可以直接持久化,也可以使用AggregateOrientedDatabase或者一个序列化LOB在关系数据库中。JSON文档还可以直接提供给web浏览器,或用于将数据传输到服务器端页面渲染器。当JSON以这种方式使用时,我听到有人说使用面向对象的语言是一种阻碍,因为JSON需要被转换成对象,然后再被呈现出来——这是对编程工作的浪费。我同意关于浪费的观点,但我认为这不是对象的问题,而是未能理解封装的问题。
封装的集合
如果您了解面向对象设计,您很快就会了解封装数据的重要性。封装最简单的形式是使用访问器(获取和设置方法)或属性——如果您的语言支持的话。(有些人甚至在课堂上这样做-SelfEncapsulation
作为对象的函数
在编程中,对象的基本概念是数据和行为的捆绑。这在编写一组相关函数时提供了一个公共数据上下文。它还提供了一个操作数据的接口,该接口允许对象控制对该数据的访问,从而很容易支持派生数据并防止对数据的无效修改。许多语言提供显式的语法来定义类,类充当对象的定义。但是,如果您有一种具有一级函数和闭包的语言,您可以使用这些构造来使用函数即对象模式(最初由Eugene Wallingford描述)创建对象。
Getter去污剂
当他们看到一个getter方法时,你可以通过他们左手边的嘴的抽搐来告诉他们,当他们的战斧被迅速地拉了一下,当另一个getter被无情地从一个类中砍了出来时,他们就会满意地哭起来,这个类立即在一种感激的狂喜中昏迷在有男子气概的getter Eradicator的脚边。
可以观察到的状态
当人们说方法不会改变对象的可观察状态时,他们的意思是什么?
开放的继承
这是相反的态度DesignedInheritance.开放继承的倡导者并不打算禁止通过密封删除他们的类或者做任何其他事情来阻止人们继承类。
页面对象
当您针对web页面编写测试时,您需要引用该web页面中的元素,以便单击链接并确定显示的内容。但是,如果您编写直接操作HTML元素的测试,那么您的测试将容易受到UI更改的影响。页面对象使用特定于应用程序的API包装HTML页面或片段,允许您在不深入HTML的情况下操作页面元素。
表示域数据层
将信息丰富的程序模块化的最常用方法之一是将其分为三个广泛的层:表示(UI)、域逻辑(又名业务逻辑)和数据访问。因此,您经常看到web应用程序分为web层(了解如何处理HTTP请求和呈现HTML)、业务逻辑层(包含验证和计算)和数据访问层(整理如何管理数据库或远程服务中的持久数据)。
受保护的数据
在我的类中使用数据是好的OO设计吗受保护的AccessModifier吗?
公共农地
当我第一次接触c#时,我从一开始就喜欢上了属性的概念。c++ /Java的getX和setX约定对我来说总是很傻,写起来更自然obj。X= other.X
.使用get和set方法提供属性,将公共约定转变为语言自然支持的特性。
发布接口
发布接口是我使用的一个术语(第一次在华体会app下载二维码)来引用在定义它的代码基之外使用的类接口。因此,它比Java中的public更有意义,甚至比c#中的非内部public更有意义。在我为IEEE Software撰写的专栏中,我提出了这个观点公开与公开的区别实际上比公开与私人的区别更重要。
密封
密封方法或类可以防止子类重写它。
自我封装
数据封装是面向对象风格的核心原则。这意味着对象的字段不应该公开,相反,来自对象外部的所有访问都应该通过访问方法(getter和setter)进行。有些语言允许公开访问字段,但我们通常提醒程序员不要这样做。Self-encapsulation更进一步,表明所有内部对数据字段的访问也应该通过访问器方法进行。只有访问器方法应该触及数据值本身。如果数据字段没有对外公开,这将意味着添加额外的私有访问器。
软件组件
从我进入我们的行业开始,将软件开发从费力地编写华体会登录网址代码转变为通过简单的组件组装来构建强大的系统的概念就一直是我的目标。它的目标有时被瞥见,但从未真正实现——尽管许多技术都有工业重用的诱惑。
告诉不要问
告诉-不要问是一个帮助人们记住面向对象是关于将数据与操作该数据的函数捆绑在一起的原则。它提醒我们,我们不应该向对象请求数据并对该数据进行操作,而是应该告诉对象该做什么。这鼓励将行为移动到对象中以配合数据。