1、工厂方法模式(Factory Method Pattern)
所有工厂模式都用来封装对象的创建。工厂方法模式通过让子类决定该创建的对象是什么,来达到将对象创建的过程封装的目的。
工厂方法模式定义了一个创建对象的接口(称为“工厂方法”),但由子类决定要实例化的类是哪一个。工厂方法让类把实例化推迟到子类。
2、抽象工厂模式(Abstract Factory Pattern)
抽象工厂模式提供一个接口,用于创建相关或依赖对象的家族,而不需要明确指定具体类。
抽象工厂的方法经常以工厂方法的方式实现。抽象工厂的任务是创建一个具体产品,利用实现抽象工厂的子类来提供这些具体的做法。
3、单件模式(Singleton Pattern)
单件模式确保一个类只有一个实例,并提供一个全局访问点。
单件模式需要注意的是多线程的情况,为了确保单件模式能在多线程的情况下正常工作,有以下三个选择:
a、把getInstance()变成同步方法。
public class Singleton {
private static Singleton uniqueInstance;
private Singleton() {}
public static synchronized
Singleton getInstance() {
if(uniqueInstance == null) {
uniqueInstance = new Singleton();
}
}
// other functions...
}
同步会降低性能,而且只有第一次执行此方法时,才真正需要同步。也就是说,一旦设置好uniqueInstance变量,就不再需要同步这个方法了。
b、使用“急切”创建实例,而不用延迟实例化的做法。
public class Singleton {
private static Singleton uniqueInstance = new Singleton()
;
private Singleton() {}
public static Singleton getInstance() {
return uniqueInstance;
}
// other functions...
}
利用这个做法,JVM在加载这个类的时候马上创建唯一的单件实例。
c、用“双重检查锁”,在getInstance()中减少使用同步。
public class Singleton {
private volatile
static Singleton uniqueInstance;
private Singleton() {}
public static Singleton getInstance() {
if(uniqueInstance == null) { //检查实例,如果不存在,就进入同步区块
synchronized(Singleton.class)
{
if(uniqueInstance == null)
{ //进入区块后再检查一次,如果仍为null,才创建实例
uniqueInstance = new Singleton();
}
}
}
}
// other functions...
}
volatile关键词确保当uniqueInstance变量被实例化成Singleton实例时,多个线程正确地处理uniqueInstance变量。只有第一次会进入同步区块,执行创建实例的代码,以后就不会进入同步区块了。
注意:在1.4及更早版本的Java中,许多JVM对于volatile关键字的实现会导致双重检查加锁的失效,因为如果使用旧版的Java,就不要利用这个方法实现单件模式。
4、原型模式(Prototype Pattern)
用原型实例制定创建对象的种类,并且通过拷贝这些原型创建新的对象。
关于原型模式的一些文章:http://tailsherry.iteye.com/blog/121580,http://www.cnblogs.com/kid-li/archive/2006/05/18/403559.html。
5、生成器模式(Builder Pattern)
将一个复杂对象的构建与它的表示分离,使用同样的构建过程可以创建不同的表示。它使你可以改变一个产品的内部表示,它将构造代码和表示代码分开,它使你可以对构造过程进行更精细的控制。
对生成器模式详细讲解的文章:http://www.cnblogs.com/kid-li/archive/2006/05/08/393529.html。
分享到:
相关推荐
C#面向对象设计模式纵横谈 第二课 Singleton 单件(创建型模式)
创建型模式 创建型模式 创建型模式创建型模式创建型模式
李建忠面向对象设计模式视频精讲:Singleton 单件(创建型模式)
C#面向对象设计模式纵横谈(2):Singleton 单件(创建型模式)
1、使用工厂方法模式重构上个学期的简易四则计算器(带用户界面),并在原有四则计算器中拓展功能,增加指数和对数两种二元运算。 2、假设生产计算机只需要CPU、内存、显卡、显示器和光驱,现在要生产3个不同型号的...
创建模式的案例,有工厂模式,单态模式 里面有详细的案例和设计思路 有利于初学者学习
行为型模式+结构型模式+创建型模式:三大设计模式实例剖析与深入解读 行为型模式 备忘录模式 +结构型模式 创建型模式总结 +创建型模式
C#面向对象设计模式纵横谈-创建型模式
设计模式,设计模式主要可以分为三大类,分别是创建型模式、结构型模式和行为型模式。
从意图等几个方面较为详细的介绍设计模式中的创建型模式
23种设计模式之四(创建型模式)Builder模式
Factory Method 工厂方法模式(创建型模式).wmv
C#面向对象设计模式纵横谈(4):Builder 生成器模式(创建型模式) 体验课程
UML的基础、怎么设计UML 和 创建型模式的几个设计模式案例、图解,概念
JAVA-设计模式-创建型模式-原型模式
JAVA-设计模式-创建型模式-单例模式
Java设计模式之创建型模式的几个小DEMO
04创建型模式1