设计模式
- 创建型模式
- 结构型模式
- 行为型模式
创建型模式
- 单例(Singleton)模式:某个类只能生成一个实例,该类提供了一个全局访问点供外部获取该实例,其拓展是有限多例模式。
- 原型(Prototype)模式:将一个对象作为原型,通过对其进行复制而克隆出多个和原型类似的新实例。
- 工厂方法(FactoryMethod)模式:定义一个用于创建产品的接口,由子类决定生产什么产品。
- 抽象工厂(AbstractFactory)模式:提供一个创建产品族的接口,其每个子类可以生产一系列相关的产品。
- 建造者(Builder)模式:将一个复杂对象分解成多个相对简单的部分,然后根据不同需要分别创建它们,最后构建成该复杂对象。
单例 Singleton
指一个类只有一个实例,且该类能自行创建这个实例的一种模式。
特点:
- 单例类只有一个实例对象;
- 该单例对象必须由单例类自行创建;
- 单例类对外提供一个访问该单例的全局访问点;
懒汉模式
public class LazySingleton
{
private static volatile LazySingleton instance=null;
private LazySingleton(){}
public static synchronized LazySingleton getInstance()
{
if(instance==null)
{
instance=new LazySingleton();
}
return instance;
}
}
volatile 和 synchronized关键字可以保证线程安全,但是每次访问时都要同步,会影响性能,且消耗更多的资源。
饿汉模式
public class HungrySingleton
{
private static final HungrySingleton instance=new HungrySingleton();
private HungrySingleton(){}
public static HungrySingleton getInstance()
{
return instance;
}
}
线程安全
应用场景
线程池、网络连接池。 单例模式只允许创建一个对象,共享该对象可以节省内存,并加快对象访问速度。