单例模式:
三个要点:
1.某个类只能有一个实例。
2.它必须自行创建这个实例;
3.它必须自行向外提供这个实例。
饿汉式:
public class Singleton{
private static Singleton singleton = new Singleton ();
private Singleton (){}
public Singleton getInstance(){
return singletion;
}
}
优点:
1.线程安全
2.在类加载的同时已经创建好一个静态对象,调用时反应速度快
缺点:
资源效率不高,可能getInstance()永远不会执行到,但执行该类的其他静态方法或者加载了该类(class.forName),那么这个实例仍然初始化
懒汉式: (懒加载的思想,用到才会初始化实例)
public class Singleton{
private static Singleton singleton = null;
public static synchronized Singleton getInstance(){
if(singleton==null){
singleton = new Singleton();
}
return singleton;
}
}
优点:
资源利用率高,不执行getInstance()就不会被实例,可以执行该类的其他静态方法
缺点:
第一次加载时不够快,多线程使用不必要的同步开销大
比较:
饿汉式是线程安全的,在类创建的同时就已经创建好一个静态的对象供系统使用,以后不再改变。
懒汉式如果在创建实例对象时不加上synchronized则会导致对对象的访问不是线程安全的,
推荐使用第一种
双重检测:
class Singleton4 {
private Singleton4() {}
public static Singleton4 instance = null;
public static Singleton4 getInstance() {
if (instance == null) {
synchronized (Singleton4.class) {
if (instance == null) {
instance = new Singleton4();
}
}
}
return instance;
}
}
优点:
资源利用率高,不执行getInstance()就不被实例,可以执行该类其他静态方法
缺点:
第一次加载时反应不快,由于java内存模型一些原因偶尔失败
静态内部类:
class Singleton5 {
private Singleton5() {}
private static class SingletonHelp {
static Singleton5 instance = new Singleton5();
}
public static Singleton5 getInstance() {
return SingletonHelp.instance;
}
}
优点:
资源利用率高,不执行getInstance()不被实例,可以执行该类其他静态方法
缺点:
第一次加载时反应不够快
=======================================================================================================================================
多例模式:
三个要点:
1.多例类可以有多个实例;
2.多例类必须自己创建,管理自己的实例;
3.向外界提供自己的实例。
从java.util.Locale类中可以看到一个非常具体的多例的用法;
并且可以看到在Locale类中,对于实例数目不多的时候,可以使用一个个的静态变量存储一个个的实例。在数目较多的时候,就需要使用静态聚集存储这些实例。
==========================================================================================================
建造者模式:
建造者模式是一种对象创建型模式之一,用来隐藏复合对象的创建过程,它把复合对象的创建过程加以抽象,通过子类继承和重载的方式,动态地创建具有复合属性的对象。
优点:
在建造者模式中,客户端不用在直接负责对象的创建,而是把这任务交给了具体的创建者类;把具体的如何组装的责任交给了Director类,客户端之负责对象的调用即可,符合单一职责原则。
缺点:
1.难于应付“产品构造过程”的需求变动。
2.创建者模式比较符合产品差别不大的对象的创建,如果差别很大,就会导致非常多的具体的创建者,这时候最好结合工厂方法模式。
建造者模式的实质:
解耦组装过程和创建具体部件,使得客户端不用去关心每个部件是如何组装的。
建造者模式是为了解决复合对象的创建而生的,建造者模式将复杂对象的构建与对象的表现分离开来,这样使得同样的构建过程可以创建出不同的表现;有利明确各部分的职责目标,有利于软件结构的优化。
构建产品构造过程(算法或步骤)是不变的,变化的是建造者的部分。
分享到:
相关推荐
免线程同步问题,而且还能防止反序列化重新创建新的对象,绝对的线程安全,同时也能保证单例的唯一性。...同时,单例模式也常常与其他设计模式结合使用,如工厂模式、建造者模式等,以解决更复杂的问题。
1. 创建型模式包括单例模式、工厂模式、建造者模式和原型模式等。创建型模式关注的是如何创建对象,其目的是为了使对象创建过程更灵活、高效。 2. 结构型模式关注的是如何组合类和对象以获得更大的结构,例如适配器...
创建型模式可分为以下5种模式:单例模式、抽象工厂模式、建造者模式、工厂模式、原型模式。 3.2原型模式是一种创建型设计模式,Prototype模式允许一个对象再创建另外一个可定制的对象,根本无需知道任何如何创建的...
Java的23种设计模式是软件开发中广泛采用的最佳实践,...接下来的21种设计模式同样重要,包括单例模式、建造者模式、原型模式、抽象工厂模式等,它们各自解决了不同的设计挑战,共同构成了Java开发中的核心设计原则。
- **建造者模式 (Builder)**:将复杂对象的构建与其表示分离,使得同样的构建过程可以创建不同的表示。 - **原型模式 (Prototype)**:通过复制现有对象来创建新对象。 - **装饰器模式 (Decorator)**:动态地给一个...
它们包括单例模式、工厂方法模式、抽象工厂模式、建造者模式和原型模式。 - 单例模式确保一个类只有一个实例,提供全局访问点,常用于配置管理、线程池等场景。 - 工厂方法模式将对象的创建过程封装在子类中,增强...
设计模式可以被归类为创建型、结构型和行为型三类,每类包含若干种模式,如创建型中的工厂方法模式、抽象工厂模式、单例模式、建造者模式和原型模式;结构型中的适配器模式、装饰器模式、代理模式、外观模式、桥接...
建造者模式(Builder Pattern) 将一个复杂对象的构建与其表示分离,使得同样的构建过程可以创建不同的表示。这对于创建复杂对象尤其有用,尤其是当这些对象的创建逻辑复杂且需要高度定制时。 #### 11. 桥梁模式...
1. **创建型模式**:如工厂模式、抽象工厂模式、单例模式、建造者模式和原型模式,主要处理对象的创建过程,使得创建过程更加灵活和可控制。 2. **结构型模式**:如适配器模式、装饰器模式、代理模式、桥接模式、...
创建型设计模式关注对象的创建过程,如工厂模式、单例模式和建造者模式等。在健康打卡模块中,可能会用到工厂模式,通过一个工厂类来创建不同类型的健康打卡对象,这些对象可能包括员工打卡、学生打卡等多种类型,...
- **Builder**(建造者模式):将一个复杂对象的构建与其表示分离,使得同样的构建过程可以创建不同的表示。 - **Prototype**(原型模式):用原型实例指定创建对象的种类,并且通过拷贝这个原型来创建新的对象。 #...
5. 建造者模式:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 6. 原型模式:用原型实例指定创建对象的种类,并且通过复制这些原型创建新的对象。 除了创建型模式,设计模式还包括...
1. 创建型模式:如单例模式(Singleton)、工厂模式(Factory)、抽象工厂模式(Abstract Factory)、建造者模式(Builder)和原型模式(Prototype)。它们主要关注对象的创建过程,使得代码在创建对象时更具灵活性...
这个资源可能包括了23种经典的GOF(GoF,Gang of Four)设计模式,如单例模式、工厂模式、抽象工厂模式、建造者模式、原型模式、适配器模式、装饰器模式、代理模式、桥接模式、组合模式、享元模式、职责链模式、命令...
1. 创建型模式:如工厂模式、单例模式、建造者模式,用于对象创建过程的优化。 2. 结构型模式:如适配器模式、装饰器模式、代理模式,解决类与类之间的结构关系。 3. 行为型模式:如策略模式、观察者模式、责任链...
除了上述模式,还有享元模式(减少对象的创建,提高性能)、组合模式(表示部分-整体层次结构)、观察者模式(定义对象间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新...
1. **创建型模式**:如单例模式、工厂模式、建造者模式等,关注对象的创建过程,使得对象的创建过程更加灵活和可控。 2. **结构型模式**:如适配器模式、装饰器模式、代理模式、桥接模式、组合模式、外观模式、享元...
建造者模式用于构建复杂对象,通过一步一步构建过程,避免了构造函数参数过多的问题。 适配器模式将两个不兼容的接口转换为可以一起工作的接口,常用于不同组件的集成。装饰器模式允许在运行时动态地给对象添加新的...
建造者模式适用于创建一个复杂的对象,允许用户通过指定复杂对象的类型和内容来构建它们,使创建代码与表示代码分离。 4. 原型模式(Prototype) 原型模式通过实现Cloneable接口来复制一个对象,而不是新建一个对象...