第一种 单例模式
意图 保证一个类仅有一个实例,并提供一个访问它的全局访问点。
- 构建模式
- 懒汉模式 线程不安全,使用时候加载
- synchronized 加在方法名上
- 双重检测
- 静态内部类/登录模式
- 饿汉模式 线程安全,类加载时候加载
- 懒汉模式 线程不安全,使用时候加载
优点: 1、在内存里只有一个实例,减少了内存的开销,尤其是频繁的创建和销毁实例(比如管理学院首页页面缓存)。 2、避免对资源的多重占用(比如写文件操作)。
缺点:没有接口,不能继承,与单一职责原则冲突,一个类应该只关心内部逻辑,而不关心外面怎么样来实例化。
第二种 工厂模式
意图:定义一个创建对象的接口,让其子类自己决定实例化哪一个工厂类,工厂模式使其创建过程延迟到子类进行。单个产品
优点: 1、一个调用者想创建一个对象,只要知道其名称就可以了。 2、扩展性高,如果想增加一个产品,只要扩展一个工厂类就可以。 3、屏蔽产品的具体实现,调用者只关心产品的接口。
缺点:每次增加一个产品时,都需要增加一个具体类和对象实现工厂,使得系统中类的个数成倍增加,在一定程度上增加了系统的复杂度,同时也增加了系统具体类的依赖。这并不是什么好事。
第二种 抽象模式
意图:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。产品族
优点:当一个产品族中的多个对象被