我总是发现观察者模式几乎与通常的事件驱动方法类似.实际上,我几乎相信他们实际上只是指同一件事的不同名称.他们都使用类似的概念来作为一个监听器,甚至在实现中,它们几乎是相同的东西,那就是有一个回调方法/函数来执行一个动作.这至少在Java中.
在其他语言中说Actionscript/Flex,事件更加用户友好,并且可能看起来不仅仅是观察者模式定义.但是,这些概念听起来仍然相同.
但这是真的吗?观察者模式是否与通常的事件驱动编程风格相同?
Composite Pattern和Decorator Pattern有什么区别?
我不是在问采访的观点.我想知道在struts框架等项目中实现的实时场景.
我希望能够确定基类方法是否已被子类重写,因为在调用它之前需要昂贵的设置,并且我们系统中的大多数子类都不会覆盖它.可以使用反射提供的方法句柄进行测试吗?或者是否有其他方法来测试类方法是否被覆盖?
例如
class BaseClass {
void aMethod() { // don nothing }
protected boolean aMethodHasBeenOverridden() {
return( // determine if aMethod has been overridden by a subclass);
}
}
Run Code Online (Sandbox Code Playgroud) 如果线程T1通过获取类级别锁定进入方法m1,这是否意味着另一个线程T2无法通过获取对象级别锁定来运行不同的方法m2?
使用构建器设计模式的缺点是什么.有没有?
编辑 - 我想知道使用构建器设计模式是否有任何不良后果?正如GOF书中所述,他们提到了设计模式的好坏后果.但他们没有提到建筑师设计模式的任何不良后果.
我的一台生产机器有一个奇怪的问题.它托管一个执行CMS(并发标记和扫描)的Java应用程序,但它只清理了旧一代的一小部分.我怀疑内存泄漏并尝试了堆转储.但堆转储之前的Full GC几乎清除了所有旧代.发生了什么?我从未见过Java垃圾收集的这种行为.通常CMS和Full GC应该收集大约相同数量的垃圾,现在CMS保持大约10GB以上.
GC日志:
**2016-01-04T07:37:40.196+0000: 431200.698: [GC [1 CMS-initial-mark: 21633423K(27336704K)] 22826703K(30101504K), 4.3910840 secs] [Times: user=4.40 sys=0.01, real=4.39 secs]
2016-01-04T07:37:44.588+0000: 431205.090: [CMS-concurrent-mark-start]
2016-01-04T07:38:08.718+0000: 431229.220: [CMS-concurrent-mark: 18.213/24.131 secs] [Times: user=126.00 sys=2.22, real=24.13 secs]
2016-01-04T07:38:08.718+0000: 431229.220: [CMS-concurrent-preclean-start]
2016-01-04T07:38:08.843+0000: 431229.345: [CMS-concurrent-preclean: 0.118/0.125 secs] [Times: user=0.29 sys=0.00, real=0.12 secs]
2016-01-04T07:38:08.843+0000: 431229.345: [CMS-concurrent-abortable-preclean-start]
CMS: abort preclean due to time 2016-01-04T07:38:13.906+0000: 431234.408: [CMS-concurrent-abortable-preclean: 4.975/5.063 secs] [Times: user=10.18 sys=0.03, real=5.06 secs]
2016-01-04T07:38:14.001+0000: 431234.503: [GC[YG occupancy: 1312993 K (2764800 K)]2016-01-04T07:38:14.001+0000: 431234.503: [Rescan (parallel) …Run Code Online (Sandbox Code Playgroud) 在编程中,哪个拼写适配器或适配器是标准或事实上的标准?它们之间有区别吗?
在boost中我看到"适配器",而在文献中我看到"适配器".
代码中首选哪一个?
Joshua Bloch的Effective Java描述了一个Builder模式,可用于构建具有多个可选定制参数的对象.他为Builder函数建议的命名约定,"模拟在Ada和Python中找到的命名可选参数",似乎不符合Java的标准命名约定.Java函数往往依赖于使用动词来启动函数,然后依靠基于名词的短语来描述它的作用.Builder类只有该函数定义的变量的名称.
Java标准库中是否有使用Builder模式的API?我想在继续使用之前,将本书中的建议与核心Java库集中的实际实现进行比较.
java ×7
builder ×2
oop ×2
adapter ×1
composite ×1
decorator ×1
events ×1
facade ×1
heap-memory ×1
locking ×1
overriding ×1
terminology ×1