最近做过几个Case,都是因为多线程而造成的BUG。 1. ArrayList是非线程安全的,程序将会去读配置文件并将获取的信息放置到一个静态ArrayList中。如果这个ArrayList不为空,则会直接返回。现在有一个线程在ArrayList为空的时候进入了读取配置的操作中并不停的向ArrayList中添加数据,而另外一个线程则判断ArrayList已经不为空,则直接返回了。之后这个ArrayList会做为参数来new一个新的ArrayList,这时候错误发生了。我们可以看: public ArrayList(Collection<? extends E> c) {
...
观察者模式,顾名思义,应当有被观察以及观察的对象。就好比妈妈做完了饭,喊孩子们来吃饭一样。妈妈便是被观察者,孩子们便是观察者。当做完饭这个事件触发的时候,妈妈便会通知她所有的孩子。
被观察者就是主题,观察者可以在自己感兴趣的主题上注册。从而在主题发生变化的时候,所有已经注册的观察者就会得到通知。就好比订购报纸一样,观察者可以订阅感兴趣的主题。但是如果观察者希望自己能够主动查询主题的最新信息并且主题也乐意提供服务的话,只需要主题提供一定的接口出来就可以了。
JDK中已经提供Observable类和Observer接口,用户可以直接使用,但是如果需要可以扩展更多的功能的话,完全可以自己来实现。
下 ...
策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化。
这是一个比较简单的模式,核心的思想就是将应用中的变化之处独立出来,这样就可以避免继承而使得算法分散在各个子类中,从而减少维护所带来的开销。更多的利用组合而不是继承会使得我们的代码更加的灵活。
package org.headfirst.strategy;
public abstract class Duck {
protected FlyBehavior flyBehavior = null;
// The ducks will own se ...
- 浏览: 712 次
- 性别:

- 来自: 杭州

- 详细资料
搜索本博客
最近加入圈子
最新评论
-
Head First 设计模式学习 ...
我也在看这本书啊,觉得真的不错,里面的用词很幽默,能够快乐有趣的学习知识,感觉一 ...
-- by superloafer -
Head First 设计模式学习 ...
今天也从图书馆借了本 Head First设计模式,小看了一章,感觉挺不错的,有 ...
-- by scnujie






评论排行榜