`
arcticfox9902
  • 浏览: 108558 次
  • 性别: Icon_minigender_2
  • 来自: 杭州
社区版块
存档分类
最新评论

创建型模式

 
阅读更多

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。

 

 

分享到:
评论

相关推荐

    设计模式之创建型模式实验.docx

    【设计模式之创建型模式实验】 创建型设计模式主要关注对象的创建,它们提供了一种在不指定具体类的情况下创建对象的方式,增强了系统的灵活性和可扩展性。在本实验中,我们将探讨五种常见的创建型设计模式:简单...

    C#面向对象设计模式纵横谈-1.Singleton 单件(创建型模式)

    在提供的"1.Singleton 单件(创建型模式).wmv"视频文件中,可能详细讲解了Singleton模式的概念、实现方式、优缺点以及在C#中的具体应用实例,包括如何在实际项目中适当地使用和避免滥用Singleton模式。观看该视频可以...

    设计模式之创建型模式

    创建型模式作为设计模式的五种主要类别之一,它主要关注的是对象的创建过程,通过抽象和封装创建过程中的变化点,使得系统能够更加灵活地应对未来的变化。 创建型模式包括多种不同的模式,例如工厂模式、单态模式、...

    面向对象设计模式:Singleton 单件(创建型模式)

    李建忠面向对象设计模式视频精讲:Singleton 单件(创建型模式)

    C#面向对象设计模式纵横谈(2):Singleton 单件(创建型模式)

    标题和描述均聚焦于"C#面向对象设计模式"之中的"Singleton单件(创建型模式)",这是一种在软件工程领域广泛运用的设计模式,其核心在于确保一个类只有一个实例,并提供一个全局访问点,以实现资源的有效管理和控制。...

    23种设计模式,创建型模式共5种,结构型模式7种,行为型模式11种

    设计模式分为三大类:创建型模式、结构型模式和行为型模式。 **创建型模式**关注的是对象的创建。共有五种创建型模式: 1. **工厂方法模式**:它定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法...

    软件设计模式实验1创建型模式源码

    1、使用工厂方法模式重构上个学期的简易四则计算器(带用户界面),并在原有四则计算器中拓展功能,增加指数和对数两种二元运算。 2、假设生产计算机只需要CPU、内存、显卡、显示器和光驱,现在要生产3个不同型号的...

    C#面向对象设计模式纵横谈-创建型模式

    虽然不是严格意义上的创建型模式,但组合模式与创建型模式密切相关,因为它允许我们构建树形结构的对象。它将简单对象和组合对象以一致的方式处理,使客户端代码可以透明地操作单个元素或整个对象结构。 以上创建...

    创建型模式创建型模式创建型模式创建型模式

    创建型模式是软件设计模式中的一个重要类别,它们主要关注对象的创建过程,旨在提供一种抽象的方式来实例化对象,使得系统能够独立于具体类的实例化、组合和表示。这种独立性提高了系统的灵活性,使得在面临需求变化...

    Java设计模式之创建型模式源码以及文档

    本篇主要聚焦于创建型模式,这是一种用来处理对象创建的技术,通过封装、抽象和多态来提供更灵活的实例化过程。 创建型模式包括五种主要类型:单例(Singleton)、工厂方法(Factory Method)、抽象工厂(Abstract ...

    设计模式1-创建型模式

    "设计模式1-创建型模式" 设计模式是软件设计中的一种解决方案,它提供了一种通用的设计方案,解决了面相对象系统中重复出现的设计问题。设计模式的学习和运用对软件系统开发有着非常重要的意义,它可以帮助开发者更...

    设计模式原理与应用之创建型模式.pptx

    创建型模式是设计模式中的一个重要类别,它关注于对象的创建过程,帮助开发者封装创建细节,使系统独立于具体对象的创建方式。 1. **Singleton(单例模式)** 单例模式确保一个类只有一个实例,并提供全局访问点...

    设计模式之创建型模式.pdf

    创建型模式是软件工程中23种设计模式中的一类,主要目的是使得对象的创建与使用相分离,从而使系统更加灵活。创建型模式包括单例模式、工厂方法模式、抽象工厂模式、建造者模式和原型模式等。这些模式各有其特定的...

    行为型模式+结构型模式+创建型模式:三大设计模式实例剖析与深入解读

    在给定的标题和描述中,我们关注的是三种主要的设计模式类别:行为型模式、结构型模式和创建型模式。下面将分别对这三大类模式进行详细阐述,并通过实例剖析它们的核心概念和应用场景。 **行为型模式**主要关注对象...

    Java设计模式之创建型模式的几个小DEMO

    创建型模式是设计模式的一种分类,主要关注对象的创建过程,旨在抽象和隔离实例化过程,提高代码的灵活性和可复用性。本篇文章将详细探讨Java中的几种创建型设计模式,并通过具体的DEMO来阐述它们的应用。 1. 单例...

    创建型模式uml类图EA文件.rar

    在软件设计领域,创建型模式是一种重要的设计模式类别,它主要关注对象的创建过程,以提供更为灵活和可扩展的代码结构。本压缩包文件包含了五个关于创建型模式的UML类图,通过Enterprise Architect(EA)软件进行...

    设计模式之“创建型模式”经典代码

    创建型模式是设计模式的一种,主要关注对象的创建过程,帮助我们在不同场景下以灵活、抽象的方式创建对象,提高代码的复用性和可读性。以下是对几种创建型模式的详细解释: 1. **抽象工厂(Abstract Factory)** ...

    创建型模式(除singleton)外的四种模式简单实例

    在本实例中,我们将探讨四种创建型模式:Abstract Factory、Builder、Factory Method和Prototype。 1. **Abstract Factory模式**: - 抽象工厂模式是一种为一个产品族提供对象的接口,它不指定具体的产品类,而是...

Global site tag (gtag.js) - Google Analytics