Tag: 设计

编程一对多关系

所以我很惊讶在谷歌和stackoverflow上搜索不会返回更多结果。 在OO编程中(我使用的是java),你如何正确地实现一对多关系? 我有一个class级Customer和class级Job 。 我的申请是为一家为客户完成工作的虚构公司。 我当前的实现是这样的, Job类与Customer类没有任何关系,根本没有对它的引用。 Customer类使用集合和方法来保存,检索和修改有关已为客户分配和/或完成的作业的信息。 问题是,如果我想知道某个特定Job客户是做什么的,该怎么办? 我只发现了相关的这篇文章: http : //www.ibm.com/developerworks/webservices/library/ws-tip-objrel3/index.html 。 根据作者的实现,我会让Job构造函数接受一个Customer参数,然后存储它以便我可以检索它。 但是,我完全不能保证这个模型可以保持一致 。 没有为工作的相关客户设置工作作为该工作不适用的客户,并为其他人完成的客户添加工作。 任何有关这方面的帮助将不胜感激。

糟糕系统设计的代码重构

我是一名初级软件工程师,他接受了接管旧系统的任务。 根据我的初步评估,该系统存在一些问题。 意大利面条代码 重复的代码 10k及以上的课程 使用log4j进行滥用和过度记录 糟糕的数据库表设计 缺少源代码控制 – >我为此设置了Subversion 缺少文档 – >除了阅读代码之外,我不知道业务规则 我该怎么做才能提高系统质量并解决这些问题? 我可以考虑使用静态代码分析软件来解决任何不良编码实践。 但是,它无法检测到任何不良的设计问题或问题。 我该如何逐步解决这些问题?

(实体 – 控制 – 边界模式) – >如何处理两个实体?

前提 我最近阅读/观看了由Java Champion Adam Bien撰写的很多文章/video,他主张使用古老但更新的 实体 – 控制 – 边界设计模式 JAVA EE> = 6。 利用CDI,EJB 3.1,JPA 2和其他JAVA EE 6function,这种模式应该有助于创建更多面向业务的组件 ,更容易进行unit testing,并根据职责更高地分离关注点。 由于我使用了上面列出的所有function,这种模式听起来非常有趣,我正在寻找它,看看ECB是否符合我的下一个项目要求。 到目前为止我得到了什么 在ECB中,每个逻辑实体分为三部分(如果我错了,请纠正我): 边界 ,一种强大的外墙,唯一可从外面进入的等级。 对于外部 (如果我做对了),我们的意思是在应用程序之外 ,例如。 远程客户端, 在组件包之外 ,例如。 我申请的另一部分; a(n可选) 控制器 ,负责某种操作(例如,实体的validation); 一个实体 ,可以是一个纯粹的JPA实体,但也可以包含一些装饰/validation/(最小)业务逻辑。 例如,考虑有两个不同的实体( Orange和Apple ),一个在它们FruitsManager做CRUD的类( FruitsManager )和一个对它们执行一些控制的类( FruitsQualityChecker )。 直到昨天,它会像( OLD WAY ): com.foo.bar.business.FruitsService /* CRUD */ com.foo.bar.business.FruitsQualityChecker /* […]

给定两个Java线程,当其中一个线程完成时停止一个线程

我正在为这个问题寻找一个干净的设计/解决方案:我有两个线程,可以在用户想要的时候运行,但最终在用户发出stop命令时停止。 但是,如果其中一个线程突然结束(例如,由于运行时exception),我想停止另一个线程。 现在两个线程都执行一个Runnable (所以当我说’停止一个线程’我的意思是我在Runnable实例上调用一个stop()方法),我在想的是避免使用线程(Thread类)并使用CompletionService接口然后将两个Runnables提交给此服务的实例。 有了这个,我会使用CompletionService的方法take() ,当这个方法返回时,我会停止两个Runnables,因为我知道它们中至少有一个已经完成了。 现在,这有效,但如果可能的话,我想知道一个更简单/更好的解决方案。 另外,当我们有n线程并且只要其中一个线程完成停止执行所有其他线程时,什么是一个好的解决方案? 提前致谢。

Selenium PageFactory设计:在页面对象模型之后我在哪里编写断言

我正在关注Page Object Model以在一个应用程序中自动化流程。 在其中一个模块中,我必须断言页面标题和更多消息。 截至目前,我将我的Assertion代码放在​​PageFactory本身中,如下所示: public class EditPost { WebDriver driver; public EditPost(WebDriver editPostDriver) { this.driver=editPostDriver; } @FindBy(how=How.XPATH,using=”//*[@id=’message’]/p”) WebElement post_published; public void assert_message() { String actual_message_title=post_published.getText(); Assert.assertEquals(actual_message_title, “Post published. View post”); System.out.println(“Message: Post published, Successfully Verified”); } } 我从实现TestNG的主文件调用assert方法如下: @Test (priority=5) public void assert_message() { //Created Page Object using Page Factory EditPost edit_post = PageFactory.initElements(driver, […]

如何创建一个“扩展”两个现有具体类的类

我非常清楚它可以在界面的帮助下完成,而且我已经多次完成了。 但这次我的情况有很大不同。 我有class A class B ,我需要创建另一个class C ,它扩展了A和B,因为C应该具有两个function,并且还注意A和B不是相互关联的,所以即使我不能说A可以扩展class B 。 我现在应该怎么做才很困惑。 我知道我们不能改变java …但至少会有一些方法可能。 即使是最近的也可以……请帮帮我。 添加更多细节: – Class B是标准API,而class A是需要由所有exception类inheritance的公共exception类。 相关问题: 为什么Java中没有多重inheritance,但允许实现多个接口? (虽然我上面的问题并不是为什么不允许这样做。)

Android设备未显示背景图片

我创建了一个项目,针对android 4.4 – API Level 19 ,正如eclipse所建议的那样。 无论如何,在模拟器上一切看起来都很完美 – 这是一个截图: 当我在我的真实设备上安装它时出现问题 – 运行android 4.1.2 。 除了背景图片外,一切都很完美,像魅力一样。 它呈现出白色背景,就像图片不存在一样。 这是我的xml: 是不是android:background=”@drawable/wg_blurred_backgrounds_12在Android 4.1.2上工作? 我是否必须更改预设中的任何内容? 这就是我现在拥有的: 我知道我错过了一些非常小的东西,但我无法将其视为初学者。

为什么从构造函数调用Set方法不是一个好主意?

仅在inheritance或大多数情况下是真的吗? public class MyClass { public int id; public MyClass() { // Some stuff setId(5); } public setId(int id) { this.id = id; } }

Java:获得FontMetrics实例的更方便的方法

是否有更友好的方式来获取FontMetrics的实例 FontMetrics fm = Graphics.getFontMetrics(Font); 我讨厌这种方式,因为下面的例子: 如果您想在游戏中创建一个菜单,并且您希望屏幕中心的所有菜单项都需要fontmetrics。 但是,大多数情况下,菜单项是可点击的。 所以我创建了一个Rectangles数组,所有的矩形都适合于项目,所以当按下鼠标时,我可以简单地使用 for (int i = 0; i < rects.length; i++) if (rects[i].contains(mouseX, mouseY)) { … } 但是为了创建rects,我还需要FontMetrics作为它们的坐标。 所以这意味着我必须在菜单的paint-method中构造所有的矩形。 所以我想要一种获取FontMetrics的方法,这样我就可以在构造函数调用的方法中构造Rectangles。

为什么Scala列表没有大小字段?

来自Java背景,我想知道为什么Scala中的List没有像Java等效LinkedList那样的size字段。 毕竟,使用大小字段,您将能够在常量时间内确定列表的大小,那么为什么大小字段会被删除? (这个问题引用了Scala 2.8及更高版本中的新集合类。另外,我指的是不可变List ,而不是可变List 。)