`
BabyDuncan
  • 浏览: 574345 次
  • 性别: 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实现的23种设计模式Demo,抽象工厂模式、建造模式、工厂方法模式、原型模式、单例模式、外观模式、适配器模式等

    抽象工厂模式、建造模式、工厂方法模式、原型模式、单例模式、外观模式、适配器模式、桥接模式、组合模式、装饰模式、享元模式、代理模式、命令模式、解释器模式、访问者模式、迭代子模式、中介者模式、备忘录模式、...

    设计模式:简单工厂、方法工厂、抽象工厂、单例、原型、委派、模板、代理、策略

    设计模式:简单工厂、方法工厂、抽象工厂、单例、原型、委派、模板、代理、策略

    设计模式实战代码-单例、简单工厂、策略、观察者、责任链、模板模式

    设计模式实战代码-单例、简单工厂、策略、观察者、责任链、模板模式

    Java面试 java设计模式整理 单例、工厂、策略等 面试使用,学习使用

    3. 单例模式(Singleton) 4 4.建造者模式(Builder) 4 5. 原型模式(Protype) 5 6.适配器模式(Adapter) 6 7.装饰模式(Decorator) 6 8.代理模式(Proxy) 7 9.外观模式(Facade) 7 10.桥接模式(Bridge) 7 ...

    java 23种设计模式.zip

    1.创建型模式:工厂模式、抽象工厂模式、单例模式、建造者模式、原型模式。 2.结构型模式:适配器模式、桥接模式、装饰模式、组合模式、外观模式、享元模式、代理模式。 4.行为型模式:模板方法模式、命令模式、...

    设计模式-C++

    创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。 结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。 行为型模式,共十一种:...

    23种设计模式项目实例

    创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。 结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。 行为型模式,共十一种:...

    Java 经典设计模式讲解以及项目实战

    1 单例模式 2 责任链模式 3 策略模式 4 模板方法模式 5 工厂方法模式 6 抽象工厂模式 7 建造者模式 8 代理模式 9 装饰模式 10 原型模式 11 委派模式 12 适配器模式 设计模式综合运用 1 门面+模版方法+责任链+策略 2 ...

    精品源码 C# 27种设计模式源代码

    6 简单工厂模式 6 解释器模式 6 享元模式 7 桥接模式 7 状态模式 8 结构型模式总结 8 责任链模式 9 创建型模式总结 9 中介者模式 10 备忘录模式 10 行为型模式总结 11 访问者模式 1 观察者模式 1 建造者模式 1 装饰...

    设计模式自己总结一句话描述

    创建型模式,共五种: 工厂方法模式、抽象工厂模式、单例模式、构建者模式、原型模式。 结构型模式,共七种: 适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。 行为型模式,共十一种...

    【资源免费下载】Java代码积累丨大话设计模式(Java实现版本)、线程协作

    抽象工厂模式 原型模式 建造者模式 单例模式 结构型模式 队列模式 桥接模式 组合模式 装饰模式 外观模式 享元模式 代理模式 行为模式(类行为模式) 解释器模式 模板方法模式 行为模式(对象行为模式) 策略模式 ...

    java常用23中设计模式

    创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。 结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。 行为型模式,共十一种:...

    《Java设计模式》电子课件01至21章(程细柱PDF)

    内容包括统一建模语言基础知识、面向对象设计原则、设计模式概述、简单工厂模式、工厂方法模式、抽象工厂模式、建造者模式、原型模式、单例模式、适配器模式、桥接模式、组合模式、装饰模式、外观模式、享元模式、...

    《Java设计模式》详解

    内容包括统一建模语言基础知识、面向对象设计原则、设计模式概述、简单工厂模式、工厂方法模式、抽象工厂模式、建造者模式、原型模式、单例模式、适配器模式、桥接模式、组合模式、装饰模式、外观模式、享元模式、...

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

    创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。 结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。 行为型模式,共十一种:...

    Java23种设计模式可直接运行Demo

    创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。 结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。 行为型模式,共十一种:...

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

    单例模式[SINGLETON PATTERN] 多例模式[MULTITION PATTERN] 工厂方法模式[FACTORY METHOD PATTERN] 抽象工厂模式[ABSTRACT FACTORY PATTERN] 门面模式[FACADE PATTERN] 适配器模式[ADAPTER PATTERN] 模板方法模式...

    java设计模式示例

    创建型模式(5种):工厂方法模式,抽象工厂模式,单例模式,建造者模式,原型模式。 结构型模式(7种):适配器模式,装饰器模式,代理模式,外观模式,桥接模式,组合模式,享元模式。 行为型模式(11种):策略...

    C#23种设计模式样例代码和UML图

    创建型模式(抽象工厂模式、工厂方法模式、单例模式、建造者模式、原型模式); 行为型模式(策略模式、 迭代器模式、原型模式、职责链模式、 模板方法、 命令模式、 解释器模式、 中介者模式、 访问者模式、 状态...

    设计模式的精简版

    java设计模式的精简版,创建型模式:工厂方法模式,抽象工厂模式,单例模式,建造者模式,原型模式共五种; 结构型模式:适配器模式,装饰器模式,代理模式,外观模式,桥接模式,组合模式,享元模式共七种。 行为型...

Global site tag (gtag.js) - Google Analytics