JAVA单例模式

Java 的单例模式,即保证在Java应用程序中,一个Java类只有一个实例存在;单例模式可分为饿汉式、懒汉式及登记式(不常用,只做了解即可);常用的场景:读取配置文件类、工具类、线程池、缓存、日志对象等。

饿汉式

/** 
 * @author effine 
 * @date 2013-9-9  下午11:23:42
 */  
package cn.effine.singleton;  
/* 单例模式:饿汉式 */  
public class HungrySingleton {  
    /* 饿汉式单例模式, 声明的同时初始化对象 */  
    private static HungrySingleton hungry = new HungrySingleton();  
    /* 构造方法设置成privae,不允许外部实实例化 */  
    private HungrySingleton() {  
    }  
    /* 返回一个单态模式的类的实例 */  
    public static final HungrySingleton getInstance() {  
        return hungry;  
    }  
}  

单例之饿汉式:对象预先加载,线程安全;在类创建的同时生成单例对象,调用时获得对象实例的方法反应速度快,代码简练。

阅读全文

JAVA观察者模式

Java观察者模式(Observer Pattern),简单说观察者模式包含四种角色:抽象被观察者角色、具体被观察者角色、抽象观察者角色和具体观察者角色;

针对观察者与被观察者设定场景:每天我们关心的天气预报统一由中国气象局发布(被观察者),每个发布气象平台(观察者)订阅中国气象局;天气发生变化气象局发布通知给各个平台,然后平台做相应的更新操作。当然,现实中该场景是不存在的,权宜是为了加深理解Java观察者模式而生,因为气象局是不会去通知各个订阅平台,更新操作是各个平台定时刷新完成。

其中Java本身提供观察者模式的接口供开发者使用,在 java.util包下,包含接口Observer及类Observable,接口Observer是扮演抽象观察者角色,包含一个update()方法,而类Observable则扮演抽象被观察者角色,开发者只需要继承该类就能很好的运用观察者模式。闲话少说,贴出代码以供参考:

抽象被观察者角色

/** 
 * @author effine 
 * @date 2013年10月4日  下午11:02:21 
 */  
package cn.effine.observer;  
/* 抽象被观察者角色 */  
public interface IWitched {  
    /* 添加观察者 */  
    public void addWitcher(IWitchers w);  
    /* 删除观察者 */  
    public void deleteWitcher(IWitchers w);  
    /* 被观察者 发生变化,通知观察者 */  
    public void notifyWitcher(Object o);  
}

阅读全文

Firefox常用插件

经常使用的或者用着还不错的firefox插件汇总:

  • firebug:开发必备,调试js,查看页面的css,html,js
  • Tab max plus:双击关闭组件,标签页关闭
  • Adblock plus:过滤网页广告
  • FoxyProxy:代理插件,如果需要FireFox通过代理访问网络的话,FoxyProxy是最佳选择
  • flashgot:能够调用外面的下载工具,如迅雷
  • ColorfulTabs :让你的标签卡显示不同颜色。
  • noscript:安全类插件,没有你的准许,这个插件几乎能帮火狐拦掉所有的网马、恶意代码和弹窗
  • FEBE:备份你火狐的数据。如插件扩展,书签,收藏夹等。
  • Flagfox:在地址栏中显示你打开网页服务器位置的国家国旗。
  • FoxTab:以3D的形式显示标签页。
  • ie tab,用于打开那些只支持ie的网站;
  • Gmail maneger:能管理多个Gmail帐号,还能设置默认帐号,在状态栏提示是否有新邮件
  • QuickDrag :实现鼠标拖放
  • Gmail notifier : 邮件管理
  • Easy DragToGo:拖动链接新窗口打开

两年之后的今天,整理此文之余的思考;如今用chrome谷歌浏览器的频率远超firefox,总觉得firefox有点笨重(没有chrome轻量化),启动也超级慢。