class-design相关内容

类设计:实体ID与实体参考

如果Foo具有Bar类型的属性.两者都保存在可以通过ID检索的数据库中. (这些ID实际上是根据客户服务声明在业务范围内使用的.因此,它们不只是索引占位符.)我可以采用b1或b2所示的方法. 将实体束缚在一起会使我感到恐惧,因为如果您将其推得太远,很容易弹出Null.另一方面,让ID随处显示似乎增加了不必要的冗长感. int fooKey = 123; Foo f = new Foo( ..
发布时间:2020-04-27 04:07:14 其他开发

我应该实例化集合还是从集合继承?

在创建类(尤其是涉及集合的类)时,我已经多次问过自己这个问题,但是我从来没有想出令人满意的答案.这是一个面向对象的设计问题. 例如,在支票簿注册程序中,说我有一个BankAccount类. BankAccounts包含涉及帐户名称,帐户类型(检查,保存,...的枚举)和其他数据的数据,但最重要的是帐户中Adjustment(存款或取款)的集合 在这里,我有两种选择来保存调整项: ..
发布时间:2020-04-27 04:04:48 其他开发

您在类中允许的最大方法的限制N是多少?

填写面向对象概念调查(为一些学术研究人员提供有关软件设计的生活数据),我遇到了这个问题: 您的课程中允许的最大方法的限制N是多少? 然后调查继续询问您是否达到该限制N后是否重构班级. 老实说,我在设计应用程序时从未考虑过这样的限制,并且想知道这背后的原因是什么.为什么我要自我强加一个可能非常依赖于类功能的任意数字? 解决方案 您不必限制N的最大值.但是您必须遵循“高凝聚力 ..
发布时间:2020-04-27 04:02:01 其他开发

大型内部类和私有变量

我遇到过几次的事情是服务类(如JBoss服务),由于辅助内部类而变得过大.我还没有找到一种很好的方法来上课.这些助手通常是线程.这是一个示例: /** Asset service keeps track of the metadata about assets that live on other * systems. Complications include the fact the ..
发布时间:2019-09-02 09:29:22 Java开发

在运行时动态选择类

我试图想出一个解决方案,根据消息类型在运行时选择处理“消息”的类。 我知道我可以使用这样的东西 如果msg_type =“A” MsgAProcessor.execute (信息); else if msg_type =“B” MsgBProcessoror = execute(message); .... .... .... 我不想使用上面的方法,因 ..
发布时间:2019-01-15 11:24:43 Java开发

如何建模不可变类实例之间的循环?

不可变的课程很棒,但有一个大问题我无法想出一个明智的解决方法 - 周期。 class朋友{ Set朋友(); } 我是如何模仿我作为朋友而反过来拥有我的朋友朋友回来? IMMUTABILITY 来自外部世界的这个类绝对应该是不可变的。为了进行相等检查,内部持有的值应该是常量。 解决方案 [[编辑:添加代码以证明完全不可变概 ..
发布时间:2018-12-29 19:13:44 Java开发

Java:返回类(不是实例)

是否可以在静态方法中返回一个类?我会解释...... 我有: 公共课A {public static void blah(){}} 公共类B {} I想要在B中创建一个静态方法,返回 A 。所以你可以这样做: A.blah(); 和 B.getA()等等(); 这样,无需创建 A的实例 。只需使用静态方法。 ..
发布时间:2018-12-26 15:05:32 Java开发

何时编写静态方法与实例方法的编码是否有经验法则?

我正在学习Java(和OOP),虽然它可能与我现在所处的位置无关,但我想知道是否可以分享一些常见的陷阱或良好的设计实践。 解决方案 要记住的一件重要事情是静态方法不能被子类覆盖。在代码中引用静态方法实际上将它与该实现联系起来。使用实例方法时,可以根据实例的类型改变行为。你可以利用多态性。静态方法更适合功能性类型的操作,其中行为是一成不变的。比如base 64编码或计算校验和。 ..
发布时间:2018-12-26 13:13:50 Java开发

如何在Java中的不同类之间共享数据

在Java中的不同类之间共享数据的最佳方法是什么?我有一堆变量,不同的类以不同的方式在不同的文件中使用。 让我试着说明我的问题的简化版本: 这是我之前的代码: public class Top_Level_Class(){ int x,y; //获取更改x,y的用户输入; public void main(){ int p,q,r,s; //计算p,q,r,s ..
发布时间:2018-12-10 22:31:09 Java开发

非公共顶级类vs静态嵌套类

在我看来,非公共顶级类和静态嵌套类在创建帮助器类时基本上执行相同的任务。 A.java 公共类A { public static main(String [] args) { AHelper helper = new AHelper(); } } 类AHelper {} A.java 公共类A { publ ..
发布时间:2018-12-06 14:06:15 Java开发

在Objective C中有一个类似NSArray,NSDictionary等类的可变和不可变版本的逻辑是什么?

为什么Objective C中的公共集合类(如NSString,NSArray,NSDictionary等)具有可变版本和不可变版本。分别定义它们的逻辑是什么?性能,内存管理还是其他什么? 解决方案 存在类的不可变版本,因为不可变对象本身就是唯一标识符特定的州。即如果您的 NSArray 为100 NSString 个实例,则 NSArray 实例可以被视为对这些字符串中的任何一个都是幂等 ..
发布时间:2018-09-19 14:57:13 移动开发

单例类如何使用接口?

我在许多地方读过单身人士可以使用的界面。一些我怎么也无法理解这一点。 解决方案 每个类都可以实现一个接口,而Singleton只是一个“正常”确保除了它可能实现的其他业务逻辑之外的任何时间点只存在其中一个实例的类。 这也意味着Singleton至少有2个责任,这不是好的OO设计,因为班级应该只有1个责任并确保他们擅长这个责任,但这是另一个讨论。 ..
发布时间:2018-08-08 18:28:28 Java开发

各种@interface声明,有些带括号

我注意到Objective-c类的各种 @interface 声明。我想了解为什么开发人员通过以下方式声明 @interface : //在.h文件中 @interface MyClass:NSObject // ... ... @end //在.m文件中parens的目的是什么?) @interface MyClass() //更多属性声明,看起来好像可以放在.h文 ..
发布时间:2018-08-08 18:05:09 移动开发

会员复制方法

我有一个简单的低级容器类,由更高级别的文件类使用。基本上,在将最终版本保存到实际文件之前,文件类使用容器在本地存储修改。因此,某些方法直接从容器类传递到文件类。 (例如, Resize()。) 我刚刚将文件类中的方法定义为调用他们的容器类变体。例如: void FileClass :: Foo() { ContainerMember.Foo(); } 然而,这 ..
发布时间:2018-08-03 16:17:50 C/C++开发

如何设计扩展

Checkstyle 规则 DesignForExtension 。它说:如果你有一个公共/受保护的方法,它不是抽象的,也不是最终的也不是空的,它不是“为扩展而设计的”。在Checkstyle页面上阅读此规则的说明了解原理。 想象一下这种情况。我有一个抽象类,它定义了一些字段和这些字段的验证方法: public abstract class Plant { 私有String根; ..
发布时间:2018-08-03 14:44:50 Java开发

为什么是java.lang.Throwable一个类?

在以-able为结尾的java形容词是接口可序列化,可比较等...所以为什么 Throwable 一个类?如果 Throwable 是一个接口,那么异常处理是否容易? (编辑:例如异常类不需要扩展Exception / RuntimeException。) 显然,现在更改它是一个问题。但是可以抽象吗?不会避免的糟糕做法抛出新的Throwable(); 解决方案那么为什么Throwabl ..
发布时间:2017-10-01 15:12:25 Java开发