单例模式:
三个要点:
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.创建者模式比较符合产品差别不大的对象的创建,如果差别很大,就会导致非常多的具体的创建者,这时候最好结合工厂方法模式。
建造者模式的实质:
解耦组装过程和创建具体部件,使得客户端不用去关心每个部件是如何组装的。
建造者模式是为了解决复合对象的创建而生的,建造者模式将复杂对象的构建与对象的表现分离开来,这样使得同样的构建过程可以创建出不同的表现;有利明确各部分的职责目标,有利于软件结构的优化。
构建产品构造过程(算法或步骤)是不变的,变化的是建造者的部分。
分享到:
相关推荐
设计模式demo (包括:单例模式、建造者模式、策略模式)
设计模式之建造者模式代码示例,
c++实现建造者模式,可直接运行
Java设计模式共有23种,分别为:抽象工厂模式、建造模式、工厂方法模式、原型模式、单例模式、外观模式、适配器模式、桥接模式、组合模式、装饰模式、享元模式、代理模式、命令模式、解释器模式、访问者模式、迭代子...
这个http://blog.csdn.net/dawanganban/article/details/9990405博客中java设计模式的源代码。下载前请先看《设计模式——建造者模式》一文。
创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。 结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。 行为型模式,共十一种:...
建造者模式: 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表现。这就是建造者模式。 建造者模式可以把一个产品的内部表象与产品的生成过程分隔开来,从而可以使一个建造过程就可以生成...
设计模式之建造者模式,这个实例能让你尽快理解和掌握建造者模式的运用和原理
B、缩小名空间:Singleton模式是对全局变量的一种改进,它避免了那些存储唯一实例的全局变量污染名空间;C、允许对操作和表示的精化:Singleton类可以有子类,而且用这个扩展类的实例来配置一个应用是很容易的,你...
创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。 结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。 行为型模式,共十一种:...
Java 常见创建型模式中的建造者模式及其实际开发中的变种模式
创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。 结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。 行为型模式,共十一种:...
设计模式例子,观察者模式,建造者模式,一些实践的例子,通俗易懂.
java 设计模式 建造者模式,希望对大家理解设计模式有帮助
1.创建型模式:工厂模式、抽象工厂模式、单例模式、建造者模式、原型模式。 2.结构型模式:适配器模式、桥接模式、装饰模式、组合模式、外观模式、享元模式、代理模式。 4.行为型模式:模板方法模式、命令模式、...
简单易懂的C++建造者设计模式举例,对于初学设计模式的同学有很大帮助
C#设计模式之建造者模式应用实例
java 建造者模式代码
qt5 编写的建造者模式程序,适用于使用c++学习设计模式的同学