小编gin*_*eer的帖子

代理模式与覆盖

假设有一个接口Subject.

interface Subject { void request(); }
Run Code Online (Sandbox Code Playgroud)

我们有一个RealSubject类.假设我们想要增强RealSubject,我们可以使用包裹RealSubject的代理模式:

class Proxy implements Subject { 
   private RealSubject ref;
   void request(){ ... }
}
Run Code Online (Sandbox Code Playgroud)

或者我们可以扩展RealSubject并覆盖该方法

class EnhancedSubject extends RealSubject {
   @Override
   void request() { ... }
}
Run Code Online (Sandbox Code Playgroud)

哪种方法更好?我知道Liskov原则; 让我们假设EnhancedSubject满足Liskov原则.你还在考虑继承吗?

如果没有接口Subject(即,RealSubject没有实现任何接口),似乎"inherit and override"是唯一的选项,因为在Proxy模式中没有要实现的接口.如果没有主题界面,您仍然可以应用代理模式吗?

java design-patterns dynamic-proxy

4
推荐指数
2
解决办法
1810
查看次数

测试用例使代码失败?

我必须维护承包商的代码.它有这个"有趣"的片段:

String webServicesValue = 
  webResponse.substring(webResponse.indexOf("<" + fieldName + ">") + 
                        fieldName.length() + 2, 
                        webResponse.indexOf("</" + fieldName + ">"));
Run Code Online (Sandbox Code Playgroud)

我花了几分钟才明白他想要做什么.

它似乎是一个WTF代码,但我的同事建议,"如果没有破坏,请不要修复它." 我想知道这段代码是否会失败.它似乎工作到目前为止,我真的不能想到一个测试用例失败了.

谢谢,

java testing unit-testing

2
推荐指数
2
解决办法
299
查看次数