`
商志亮
  • 浏览: 14550 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

设计模式简单介绍

阅读更多
  
  设计模式:工厂模式、单例模式、模板模式
  
  1.简单工厂模式
     a.概述:
    工厂模式主要是为创建对象提供过渡接口,以便将创建对象的具体过程(new 关键字和具体的构造器)隐藏起来。用一个工厂方法来替代,对外提供的只是一个工厂方法,达到提高灵活性的目的。
     b.优点:
           1.隐藏了new关键字和构造器
           2.降低了这个对象与别的类之间的耦合度,提高了程序的可扩展性。
             原因:当子类被别的类替代,或者构造器的参数发生变化的时候,只需改动工厂方法内的new即可,改动量降到了最低,而如果不用工厂模式,而是直接用new关键字的话,需要改动的地方就很多了
           3.把对象的设计和实现分割开来,从而代码扩展性强、灵活性高。
     c.工厂模式的使用范围:
       当遇到下面的情况时,开发人员可以考虑采用工厂模式:
       * 在编码时不能预见需要创建哪一个种类的实例。
       * 一个类使用它的子类来创建对象。
       * 开发人员不希望创建了那个类的实例以及如何创建实例的信息暴露给外部程序。
      除了上面提到的例子,工厂模式的实现方式还允许有一些小小的变化,例如:
       * 基类可以是一个抽象类,在这种情况下,工厂类必须返回一个非抽象类。
       * 基类提供了一些缺省方法,只有当这些缺省方法不能满足特殊需求的情况下才能在子类中重写这些方法。
       * 可以直接通过传递给工厂类的参数决定应该返回哪一个子类的实例。
     d. 使用工厂模式,它的设计期于运行期的对象不同,这样就增强了代码的可扩展性。
        它把构造器隐藏了起来,降低了代码的耦合度,增强了代码的复用性。
        工厂模式与new的比较:如果使用new关键字的话,那么如果这个类的对象在很多的地方用到,必须要使用多次的new操作,这样容易引起代码的重复使用,如果需要改动或者替换成这个类的子类对象,那么,就需要把执行了new操作的所有地方都要改,比较麻烦。而工厂模式,因为它代替了构造器和new关键字,而且,它是使用面向接口的,所以,需要这个类的对象的时候,只需要调用这个方法就可以了,如果,需要改动或者替换成这个类的子类对象。只要修改这个工厂里面的内容,而其他的地方都不需要改动。
          工厂模式的结构是:用一个方法来代替new关键字和构造器。
   单例模式:
       分类
  

   一。单例模式的四大特征:
       懒汉式:
        1。声明一个私有的,静态的本类对象,但并不在声明的时候就初始化,因此,它  的值为null。
        2。私有化构造器
        3。对外提供一个全局的,共有的,静态的,唯一的方法,用来获得该实例,但注意的是:必须要手动保持线程同步(synchronized)
        4.在该方法里,判断对象是否为null,如果是null的话,表示这个类还没有被实例化,就会初始化这个对象,再返回如果不是null的话,就直接返回。
  饿汉式:
        1.声明一个私有的,静态的本类对象,并在声明的时候就初始化
        2.私有构造器
        3.对外提供一个全局的,共有的,静态的,唯一的方法,用来获得该实例(饿汉式线程本身就是同步的)
        4.在该方法里,直接返回该对象即可
    从资源利用效率角度来讲,这个比懒汉式单例类稍微差些。从速度和反应时间角度来讲,则比懒汉式单例类稍好些。
    
     二、它能解决什么问题:
      它确保一个类在java虚拟机里只有一个实例,使一个类只有一个对象,整个系统共享这个对象。
     三、什么时候使用懒汉式和饿汉式:
         1。 在使用的几率很少的情况下使用懒汉式。 --用的时候实例
         2。 而使用的几率很高的话就用饿汉式。--一开始就初始化实例
     四、单例模式的好处:
         整个系统中的所有的类共用一个实例化对象,这样可以有效的节省资源。

  模板模式:
        模板模式是多个实现类继承一个抽象父类,然后通过抽象父类控制顶级逻辑,并把基本操作的实现推迟到子类去实现,这样能有效简化控制层诸类的代码,借用这种模式,我们可以把固定的异常处理代码放在基类中,而让子类来实现具体的业务,如果执行业务过程中出现异常如数据库无法连接,用户找不到异常后,直接将异常抛出让基类来处理,这样做成功的把业务处理和异常分开到了子类和基类两种类中,涉及具体业务处理的子类代码得到了很大的简化,更方便阅读,修改和管理。
      1。父类定义流程,子类实现:
         模板模式解决了子类有大量重复的流程,重复的方法,重复的变量时的问题,不同的子类间都有的方法,抽取出来放在父类中。子类都有的流程,在父类中定义好其流程,流程的具体实现就交给子类来实现。
      2。模板方法的目的。
       A 减少重复代码。
       B 防止调用出错。
      3。使用模板方法的步骤:
        A、识别:从一些列的算法中去找到,它们的共同部分在哪儿,称之为识别。
        B、分离:将不同的代码抽取出来,称之为分离。
        C、实现:用继承将抽取出来的方法在子类中予以实现。
      4。模板模式的好处:
          模板模式可以把子类中你给一些公用的代码全部放到公共的父类中共享,增加了代码的服用性,然后,可以在父类中定义程序的流程,而子类只需要实现流程中定义的抽象方法,这样子,可以为一个项目的团队开发提供了方便,使代码更加清晰,由于父类式一个抽象类,这就使得父类中的代码只能在子类中所见,增加了代码的安全性,但系统中有变动时,使用模板模式可以解决不必要的麻烦。






分享到:
评论

相关推荐

    设计模式的简单介绍

    设计模式是软件工程中的一种重要概念,它代表了在特定情境下解决常见问题的最佳实践。在Java编程中,设计模式的应用极大地提高了代码的可读性、可维护性和可复用性。下面是对设计模式的详细解释。 设计模式分为三类...

    .net设计模式详细介绍以及案例代码

    .NET设计模式系列文章和随笔,如Terrylee的"探索设计模式"系列,提供了对.NET中常见设计模式的详细介绍和案例代码,对初学者和有经验的开发者都有很大的帮助。这类资源可以帮助开发者在.NET平台上更加高效地应用设计...

    mvc设计模式介绍与详细讲解

    下面我们将通过一个简单的例子来介绍如何在Java Web应用中实现MVC设计模式。 ##### 1. 模型(Model) - **实体类**:例如`Product`类,包含产品的基本信息。 - **DAO(Data Access Object)**:如`ProductDAO`,负责...

    java模式,设计模式,多种设计模式

    ### Java设计模式详解 #### 一、引言 ...本文介绍了几种常用的设计模式,包括J2EE设计模式和软件开发设计模式,并详细探讨了它们的应用场景。希望这些知识能够帮助你在开发过程中更加高效地解决问题。

    设计模式详细介绍PPT

    设计模式是软件工程中经过长期实践验证的、通用的、解决某一类问题的解决方案,它是一种在特定场景下,为了实现某种目标而采用的最佳实践。设计模式不是代码,而是描述在某些特定上下文中,如何解决常见问题的模板,...

    【您的设计模式】趣味介绍23种设计模式

    在本文中,我们将深入探讨标题为“【您的设计模式】趣味介绍23种设计模式”中涉及的23种经典设计模式,这些模式在实际编程中具有广泛的适用性。 1. 创建型设计模式:这类模式关注对象的创建,使得代码更加灵活,...

    24种设计模式介绍与6大设计原则

    根据给定文件的信息,我们可以详细地探讨24种设计模式及其相关的6大设计原则。 ### 一、24种设计模式 #### 1. **策略模式(Strategy Pattern)** - **定义**:定义一系列的算法,把它们一个个封装起来,并且使...

    java设计模式pdf

    ### Java设计模式详解 ...通过以上内容可以看出,《Java设计模式PDF》这本书不仅提供了对各种设计模式的详细介绍,而且还结合了大量的示例代码和实用建议,对于Java开发者来说是一本非常有价值的参考书。

    23种设计模式详细介绍与区别

    设计模式是软件工程中的一种最佳实践,用于解决常见的设计问题并促进代码的可维护性和复用性。在本文中,我们将深入探讨标题提及的23种设计模式,并着重讨论桥接模式与适配器模式、装饰模式与代理模式、状态模式与...

    设计模式介绍全22种设计模式的中文教材

    《设计模式:可复用面向对象软件的基础》一书由Erich Gamma、Richard Helm、Ralph Johnson和John Vlissides(通常称为GOF四人组)编写,是设计模式领域的经典之作,虽然这里提到的是一本由结城浩编写的中文教材,但...

    设计模式——刘伟

    刘伟先生在讲解设计模式时,通常会深入浅出地介绍这些模式的原理、应用场景以及如何有效地在实际编程中应用它们。设计模式并不是具体的代码或库,而是一种经验总结,是软件开发人员在长期实践中形成的通用解决方案的...

    23种JAVA设计模式和15种J2EE设计模式

    为了更好地利用这些服务,开发者们总结了许多有效的设计模式,接下来将简要介绍几种常用的J2EE设计模式。 ##### 2.1 J2EE设计模式简介 J2EE设计模式主要关注于如何在J2EE环境中构建可伸缩、可维护的应用程序。这些...

    23种经典设计模式(疯狂Java联盟版)

    本份帮助文档主要是为了向读者介绍二十三种设计模式,包括模式的描述,适用性,模式的组成部分,并附带有简单的例 子和类图,目的是为了让读者了解二十三种设计模式,并能方便的查阅各种设计模式的用法及注意点。 ...

    设计模式期末试题下载

    ### 具体设计模式介绍 1. **工厂方法模式**:提供了一个创建对象的接口,但允许子类决定实例化哪一个类。工厂方法让类的实例化推迟到子类。 2. **抽象工厂模式**:提供一个创建一系列相关或相互依赖对象的接口,而...

    设计模式 设计模式 设计模式 设计模式

    例如,《设计模式》中文版这本书可能详细介绍了这些模式的定义、意图、结构、参与者、协作、效果、使用场景和实例代码。书中可能会通过实际的案例来阐述如何在实际编程中应用这些模式,以及它们如何解决常见的设计...

    C#设计模式.PDF

    这部分内容将通过具体的例子来介绍设计模式的应用场景,帮助读者理解不同设计模式如何解决特定的问题。 ### 3. 先有鸡还是先有蛋? 这是一个引人思考的问题,旨在探讨软件设计中的某些基本哲学问题,比如在软件...

    java设计模式(刘伟)

    在《Java设计模式》这本书中,作者刘伟全面地介绍了24种经典的设计模式,并通过丰富的案例和代码示例进行了详细的解析。本书不仅适合初学者作为入门教材,也适合有一定经验的开发人员作为参考书籍来提升自己的设计...

Global site tag (gtag.js) - Google Analytics