我已经在javaworld.com上阅读了两篇文章(1)(2),有关所有类字段应如何为私有,并且getter
/ setter方法同样糟糕。对象应该对它拥有的数据进行操作,而不是允许对其进行访问。
我目前正在为Connect
Four
进行大学作业。在设计程序时,玩游戏的特工需要访问董事会的状态(以便他们可以决定移动的方向)。他们还需要将此举动传递给游戏,以便可以将其确认为合法举动。在确定移动内容的过程中,将起点和终点归为威胁。
Board,Threat和Point对象实际上什么也没做。它们只是在那里存储可以以人类可读的方式访问的相关数据。
在设计开始时,我将板上的Points表示为两个元素的int数组,但是在创建点或引用它们的组件时会很烦人。
因此,该类:
public class Point {
public int x;
public int y;
public Point(int x, int y){
this.x = x;
this.y = y;
}
}
我能想到的各种方式都完美。除了违反我学到的每条规则。我犯了罪吗?
公共字段向对象的调用者公开对象的表示形式,即,如果必须更改表示形式,则调用者也必须进行更改。
通过封装表示,您可以强制调用者与之交互,并可以更改该表示,而无需修改调用者(只要公共api不变)。在任何不平凡的程序中,必须进行封装才能实现合理的可维护性。但是,当您需要胶囊时,它们的适当粒度可能大于单个类。例如,Iterator
从其内部表示形式封装a几乎没有意义Collection
。
顺便说一句,让我们看一下您的示例:
public class Point {
public int x;
public int y;
public Point(int x, int y){
this.x = x;
this.y = y;
}
}
该类的内部表示形式极不可能更改,因此通过将字段设为私有来隐藏表示形式的结构没有任何好处。但是,Point
一旦构造,我将阻止调用者对其进行修改:
public class Point {
public final int x;
public final int y;
public Point(int x, int y){
this.x = x;
this.y = y;
}
}
因此,实际上希望封装其状态的类可以在Point
不泄漏其内部表示的情况下返回其状态,并在其表示中使用给定的Point而不捕获它。这也与点的数学概念很好地吻合,该点没有身份或状态发生变化。
在设计程序时,玩游戏的特工需要访问董事会的状态(以便他们可以决定移动的方向)。他们还需要将此举动传递给游戏,以便可以将其确认为合法举动。在确定移动内容的过程中,将起点和终点归为威胁。
Board,Threat和Point对象实际上什么也没做。它们只是在那里存储可以以人类可读的方式访问的相关数据。
现在,这听起来像是在浪费封装的机会:确实不应允许代理商随意修改董事会,而只能采取法律行动。Game
当要更新的状态驻留在班级中时,为什么由班级负责决定什么是合法举动Board
?如果Board
要验证招数本身,则没有任何调用者,尤其是没有代理,可以违反游戏规则:
public class Board {
// private fields with state
// public methods to query state
public void perform(Move move) throws IllegalMoveException;
}
问题内容: 我正在创建一个Android应用,并且需要保留一个。我刚刚开始使用Realm ORM ,因为它支持一对一和一对多的枚举和列表。我还找到了解决字符串列表的方法(即,我必须创建一个封装字符串的StringWrapper类。但是,从文档中我了解,列表并不存在像这样的简单方法。因此,我正在寻找持久化地图的最佳方法。我目前的想法是用封装了(以前的地图关键字)和的对象列表替换我的地图。类似于。是否
本文向大家介绍深度学习应用领域的共性?相关面试题,主要包含被问及深度学习应用领域的共性?时的应答技巧和注意事项,需要的朋友参考一下 常用于图像、语音、自然语言处理等,这些领域有一个共性就是局部相关性,像素点组成图像,单词组成句子,这些特征元素一旦被打乱,表示的含义同时会发生变化,对于没有这种局部相关性的数据集,不适合用深度学习算法进行处理
3.6 ABP领域层 - 领域事件 在C#中,一个类可以定义其专属的事件并且其它类可以注册该事件并监听,当事件被触发时可以获得事件通知。这对于对于桌面应用程序或独立的Windows Service来说非常有用。但是, 对于Web应用程序来说会有点问题,因为对象是根据请求(request)被创建并且它们的生命周期都很短暂。我们很难注册其它类别的事件。同样地,直接注册其它类别的事件也造成了类之间的耦合
3.4 ABP领域层 - 领域服务 3.4.1 简介 领域服务(或者服务,在DDD模式中)是被用来执行领域操作或者业务规则的。Eric Evans 在他的DDD书中这样说过:一个好的Service应该有以下三个特征: 与领域概念相关的操作不是Entity或Value Object 的一个自然部分; 接口是根据领域模型的其它元素定义的; 操作是无状态的。 领域服务和Application Servi
我试图创建一个在realm.io之上工作的注释处理器。遗憾的是,要使用realm,你需要一个android项目,而要创建一个注释处理器,你需要一个java项目(以便导入javax.annotation.processing.*) 有人知道如何在android库上导入AbstractProcessor和所有其他需要的东西吗?我找不到这样做的方法(已经将目标兼容性和源兼容性切换到1.7)
DDD DSL DSL(domain-specific languages)即领域特定语言,唯一能够确定DSL边界的方法是考虑“一门语言的一种特定用法”和“该语言的设计者或使用者的意图。在试图设计一个DSL的时候,发现了一些有意思的简单的示例。 DSL示例 jQuery 最流行的DSL jQuery是一个Internal DSL的典型的例子。它是在一门现成语言内实现针对领域问题的描述。 $('.m