单例、 1.单例模式 2.工厂方法模式
单例模式通用代码
public class Singleton {
private static final Singleton singleton = new Singleton();
//限制产生多个对象
private Singleton()
{
}
//通过该方法获得实例对象
public static Singleton getSingleton()
{
return singleton;
}
//类中其他方法, 尽量是static
public static void doSomething()
{
}
}
单例模式的使用场景
在一个系统中, 要求一个类有且仅有一个对象, 如果出现多个对象就会出现“不良反应”, 可以采用单例模式, 具体的场景如下:
● 要求生成唯一序列号的环境;
● 在整个项目中需要一个共享访问点或共享数据, 例如一个Web页面上的计数器, 可以不用把每次刷新都记录到数据库中, 使用单例模式保持计数器的值, 并确保是线程安全的;
● 创建一个对象需要消耗的资源过多, 如要访问IO和数据库等资源;
● 需要定义大量的静态常量和静态方法( 如工具类) 的环境, 可以采用单例模式(当然, 也可以直接声明为static的方式) 。
2.工厂方法模式
工厂方法模式使用的频率非常高, 在我们日常的开发中总能见到它的身影。 其定义为:Define an interface for creating an object,but let subclasses decide which class to instantiate.Factory Method lets a class defer instantiation to subclasses.( 定义一个用于创建对象的接口, 让子类决定实例化哪一个类。 工厂方法使一个类的实例化延迟到其子类。 )