Tag: oop

应用命令模式的真实世界示例

命令模式可用于实现Transactional behavior (和Undo )。 但是我用谷歌搜索找不到这些例子。 我只能找到switched on或off灯泡的一些简单例子。 在哪里可以找到使用Command Pattern实现的/这些行为的编码示例(最好是Java )?

为什么Java中的Object类包含受保护的方法?

为什么Java中的Object类包含受保护的方法,例如clone()和finalize() ,如果您使用或编写的所有类都inheritance了Object的实例方法?

选择Java Spring作为大型网站的可扩展服务器端框架

我目前面临着关于使用适当的服务器端框架的困境。 基本上,我想选择最好的框架来构建一个大型网站来服务数百万页面点击。 网站本身将是大量数据库和ajax依赖,因此需要从一开始就计划可扩展性。 我对合适的服务器端框架的需求如下: 基于OO的高级语言支持和一些元编程支持。 在框架级别上进行适当的可伸缩性和负载平衡。 MVC架构。 ORM支持或至少对象级映射支持。 正确的路由(URL重写)支持。 我的问题最终是Java Spring框架是否适合根据上面提到的需求和需求运营大型网站? 我应该坚持像Django或Rails这样的东西吗?

实现相同接口的枚举上的Java切换

我有一个小组项目,我们被迫使用提供的接口和枚举。 想象一下如下情况: // marker interface interface Request{} // marker interface interface Response{} enum TypeAction implements Request{ TYPE1, TYPE2, TYPE3 } enum OtherTypeAction implements Request{ OTHERTYPE1, OTHERTYPE2 } 在另一个类中,我有一个请求列表,如下所示: List req = new LinkedList()我想做的是:做一个如下所示的开关: switch(a_request){ CASE TYPE1: …. CASE TYPE2: …. CASE TYPE3: …. CASE TYPE2: …. CASE OTHERTYPE1: …. CASE OTHERTYPE2: …. } 我怎么能设法做到这一点? 重要说明:我无法在接口和枚举中添加方法,但我可以创建实现上面可以看到的接口的新枚举。 […]

我可以使用压缩oops多于32 GB的堆

我能理解,使用压缩oops,我们只能使用32 GB的RAM。 有没有什么可以通过分配2堆或其他什么来使用更多? 谢谢Vineeth

Java:inheritanceself的类

我知道这是毫无意义的:我发现它很有趣,我想更多地询问当你创建一个inheritance自身的类时会发生什么的机制,导致堆栈溢出崩溃。 令人惊讶的是,Java允许您开始构建这样的构造。 我只是在猜测,但JVM是否会将自己置于一个无限循环中,尝试在实例化之前解决该类,或者它是否实际上无休止地实现了该类的多个副本? 我应该更具体; 我正在使用内部类来从封闭类派生。 public class Outside { private int outsideValue; public class Inside extends Outside { private int insideValue; public Inside(int val) { insideValue = val; } } public Outside() { Inside o = new Inside(0); } } public class Main { public static void main(String args[]) { Outside o = new Outside(); […]

如何用相同的方法“包装”两个类?

我必须使用相同的方法处理两个类,但它们不实现相同的接口,也不扩展相同的超类。 我不能/不允许更改这个类,我不构造这个类的实例我只得到这个对象。 避免大量代码重复的最佳方法是什么? 其中一个类: package faa; public class SomethingA { private String valueOne = null; private String valueTwo = null; public String getValueOne() { return valueOne; } public void setValueOne(String valueOne) { this.valueOne = valueOne; } public String getValueTwo() { return valueTwo; } public void setValueTwo(String valueTwo) { this.valueTwo = valueTwo; } } 和另外一个… package […]

在Java桌面应用程序中保留数据的最佳方法是什么?

我的桌面应用程序中有一个庞大的Java对象树,我正在尝试确定将它们作为文件保存到文件系统的最佳方法。 我曾经有过一些想法: 使用DataOutputStream滚动我自己的序列化程序 :这将使我能够最大程度地控制文件中的内容,但代价是对其进行微观管理。 使用ObjectOutputStream及其各种相关类的直接旧序列化 :虽然因为我发现数据很脆弱,但我没有卖掉它。 更改任何对象的结构会破坏它的序列化实例。 所以我陷入了似乎是一个可怕的版本化噩梦。 XML序列化 :它并不那么脆弱,但直接序列化的速度要慢得多。 它可以在我的程序之外进行转换。 JavaDB :我考虑过这一点,因为我很乐意编写JDBC应用程序。 这里的区别在于数据库实例仅在文件打开或保存时保持不变。 它并不漂亮但是……如果以后需要,它确实可以迁移到中央服务器架构,它引入了以更简单的方式查询数据模型的可能性。 我很想知道其他人的想法。 而且我希望我错过了一些比上面那些更明显,更简单的方法。 以下是从以下答案中剔除的更多选项: 对象数据库 – 具有比ORM方法少得多的基础结构,并且比XML方法执行速度更快。 谢谢aku

避免重复代码的好策略

假设我有以下情况: public class A { public String createString(final String value){ if (value == null){ throw new NullPointerException(“value must NOT be null.”); } final StringBuffer sb = new StringBuffer(); sb.append(“A”); sb.append(“B”); sb.append(“C”); if (value.length() > 3){ sb.append(“D”); sb.append(“E”); } sb.append(“Z”); return sb.toString(); } } 另一个类应该做类似的任务: public class B { public String createString(final String value){ if (value […]

覆盖实例化的Java对象中的方法

我想覆盖一个由我无法控制的工厂交给我的对象中的方法。 我的具体问题是我想覆盖Socket对象的getInputStream和getOutputStream来执行有线记录 。 一般问题如下: public class Foo { public Bar doBar() { // Some activity } } 在哪里我想采用一个实例化的Foo并用我自己的doBar替换doBar ,如下所示: Bar doBar() { // My own activity return original.doBar(); } 对于Socket,我将返回一个InputStream和OutputStream ,它们通过记录来拦截数据。