读书人

Design Pattern: Registry of Singlet

发布时间: 2012-08-31 12:55:03 作者: rapoo

Design Pattern: Registry of Singleton 模式
  考虑使用 Singleton 模式 时拥有子类别的问题,在Singleton模式中的getInstance()通常是一个静态方法,不能在子类别中重新定义它,关于子类别实例的产生交由getInstance()来进行是最好的选择,例如:

    // 必须先启始这段注册程序    // 产生并注册ChildSingleton1物件    new ChildSingleton1();    // 产生并注册ChildSingleton2物件    new ChildSingleton2();    // 注册完成,可以使用父类别来取得子类的Singleton    // 至于取回何哪一个,视您的环境变数设置决定    Singleton childSingleton = Singleton.getInstance();

  这种方式的缺点是您必须在程式中启始一段程序,先向父类别注册子类的Singleton,之后才能透过父类别来取得指定的子类别Singleton实例,好处是可以适用于没有Reflection机制的语言,如果您想要改变Singleton父类传回的子类Singleton,可以在上面的 Singleton类别中加入一个reset()方法,将instance设定为null,然后重新设定环境变数,之后再利用 Singleton父类的getInstance()方法重新取得注册表中的其它子类。

  事实上Registry of Singleton的真正优点正在于此,您可以使用父类别来统一管理多个继承的子类别之Singleton实例,您可以在需要的时候再向父类别注册子类 Singleton,必要时随时调整传回的子类别Singleton。

读书人网 >行业软件

热点推荐