Tag: 设计模式

无论如何,将空值排序到底部的一般方法很好吗?

我正在编写一些自定义比较器,我希望它们将空项目推送到列表的底部,无论我是按升序还是降序排序。 接近这个的好策略或模式是什么? 随口说说: 只需编写单独的升序和降序比较器,尽可能共享代码 通过抛出NPE或通过显式调用来将null处理委托给另一个类 包含一个升序标志并在其中放置条件逻辑以导航空值 在null处理类中包装常规比较器 还有其他策略吗? 我想听听有关不同方法的任何经验,以及各种策略的任何缺陷。

为什么属性改变了监听器而不是可观察的

我遇到了类设计的问题,直到我发现了observable(使用观察者设计模式)并因此创建了一个使用它的小应用程序来解决我的问题。 我很高兴和自豪,我用一个好的原则来解决问题。 现在我即将开始我的主要应用程序并且刚刚阅读了这篇文章 制作JFrame和Observable对象 为什么海报建议不要使用observable而是告诉使用propertychangelistenr? 使用observable有什么问题吗? 问候

如何打印秒数值最多6位精度的时间

我在列中的值是timestamp类型。 让我说我有一个价值2007-05-04 08:48:40.969774 现在,当尝试从数据库中获取值并将此时间戳值返回给函数时,我应该使用什么SimpleDateFormatter模式,以便返回秒旁边的小数部分。 我使用了yyyy-MM-dd hh:mm:ss ,但只返回到秒,并忽略了秒(.969774)旁边的分数。 我还需要帮助返回这个小数部分,精度为6位数。

什么时候使用instanceof正确的决定?

正如我一直都理解的那样,一个适当的instanceof的主要情况是: 实现Object.equals(Object) 。 因此,如果我正在编写List类,而不是出于任何原因扩展AbstractList ,我将通过首先测试o instanceof List ,然后比较元素来实现equals(o) 。 对特殊情况的重要(算法?)优化,它不会改变语义,只会改变性能。 例如, Collections.binarySearch执行instanceof RandomAccess测试的instanceof RandomAccess ,并对RandomAccess和非RandomAccess列表使用稍微不同的二进制搜索。 我不认为instanceof代表这两种情况下的代码气味。 但是有没有其他情况下使用instanceof是明智的?

ActionListener在Java GUI App的控制器中是个好主意吗?

我不想尝试遵循MVC模式。 在互联网上,我看到最着名的例子是计算器,例如这里 。 我开始使用这种MVC模式的实现。 但是现在我对控制器中的动作侦听器有些疑虑,因为它们倾向于移动查看。 有很多变化与视图相关的主要原因 – 字体,颜色,边框等。此外还有仅仅修改视图的actionlisteners! 因此,在控制器中实现这样的actionlistener要困难得多(与视图中的简单内部匿名类相比)。 此外,它需要从控制器访问许多视图元素。 我有一个想法是在控制器和一些视图中保留一些actionlisteners,但它可能导致将来混乱。 所以我想听听其他人的想法。 PS这个问题与许多ActionListener的MVC模式不重复

PatternLayout(log4j)的C,F,L,l和M到底有多慢?

众所周知,PatternLayout的C , F , L , l和M 很慢 : 警告生成调用者位置信息非常慢,应该避免,除非执行速度不是问题。 此外, 本书还提到某些应用程序只能通过更改日志记录格式来获得10%的速度。 但问题是,这些转换字符到底有多慢?

exception处理模式

这是我看到的常见模式,其中与exception关联的错误代码存储为静态最终整数。 当创建要抛出的exception时,它将使用这些代码之一以及错误消息构造。 这导致该方法要抓住它必须查看代码然后决定一个行动方案。 替代似乎是 – 为每个exception错误情况声明一个类(虽然相关exception将从一个公共基类中解除) 有中间地带吗? 推荐的方法是什么?

为什么inheritance是强耦合的,因为组合在Java中松散耦合?

在设计模式中,我一次又一次地听到了这种favor composition over inheritance 。 引用的一些原因是 1)Inheritance is strongly coupled where as composition is loosely coupled 2) Inheritance is compile time determined where as composition is run-time 3)Inheritance breaks encapsulation where as composition does not 4) anything else I am not aware of 对于像我这样的初学者来说,通过插图来理解遗传和构图在上述方面的不同之处将会很棒。 我已经阅读了各种谈论它们的SO链接,但是通过这些关键点的示例对Java初学者来说非常有用。 我认为清楚地理解差异非常重要,而不仅仅是记住要点。

为什么有java单例类? 你什么时候需要使用一个

我理解单例类只能有一个实例,但我不明白为什么这样有用。 为什么不只是使用静态变量和方法创建一个类,并在需要时使用synchronize以确保没有两个线程同时在类中执行方法。 我只是不明白为什么有人会经历创造这种类的麻烦。 我知道我在这里遗漏了一些东西。 谢谢,

对象转换模式

我有几个不同的类来自外部源(不可修改),代表相同的概念。 例如Address 。 我有com.namespace1.Address (包含字段houseNum , street , city ), com.namespace2.Address (包含字段h , s , c ), namespace3.com.CoolAddress (包含字段house_num , street , city )。 问题是我使用的某些Web服务需要某些Address对象类型,因此我需要在给定namespace3.com.CoolAddress创建com.namespace1.Address 。 字段很容易映射,但我正在寻找一个如何做的模式。 从我的角度来看,实例对象AddressConverter没有意义,因为没有状态(只有行为),当类只有行为时,它归结为实用程序类中的静态方法。 从长远来看,无论何时我需要将新对象相互映射,我都有一个地方可以添加/修改/删除方法。 如何完成它可能会改变,但我知道代码所在的位置(在一次位置)并且可以在需要时更改映射。 思考?