常用设计模式

462 阅读1分钟

设计模式

  • 创建型模式
  • 结构型模式
  • 行为型模式

创建型模式

  • 单例(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;
    }
}

线程安全

应用场景

线程池、网络连接池。 单例模式只允许创建一个对象,共享该对象可以节省内存,并加快对象访问速度。