设计模式:工厂模式、单例模式、模板模式
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。模板模式的好处:
模板模式可以把子类中你给一些公用的代码全部放到公共的父类中共享,增加了代码的服用性,然后,可以在父类中定义程序的流程,而子类只需要实现流程中定义的抽象方法,这样子,可以为一个项目的团队开发提供了方便,使代码更加清晰,由于父类式一个抽象类,这就使得父类中的代码只能在子类中所见,增加了代码的安全性,但系统中有变动时,使用模板模式可以解决不必要的麻烦。
分享到:
相关推荐
MVC模式使得用户界面与数据逻辑分离,单例模式保证关键资源的唯一访问点,代理模式在访问对象前后增加额外的功能,工厂模式将对象创建与使用分离,简单工厂模式为对象创建提供一个简单便捷的接口。通过这些模式,...
在众多设计模式中,“简单工厂”、“代理模式”和“单例模式”是三种常见的设计模式,它们各自有着明确的使用场景和设计目标。 首先,“简单工厂模式”是一种创建型模式,它定义了一个创建对象的接口,但让决定创建...
本篇将深入探讨标题中提及的几种设计模式:Model-View-Controller(MVC)模式、单例模式、代理模式以及工厂模式,尤其是简单工厂模式。 **1. Model-View-Controller (MVC) 模式** MVC模式是一种架构模式,它将应用...
在本文中,我们将深入探讨三种工厂设计模式——简单工厂模式、抽象工厂模式和工厂方法模式,以及两种单例模式——饿汉单例模式和懒汉单例模式。这些模式都是面向对象设计中的重要组成部分,对于理解和构建可维护、可...
抽象工厂模式、建造模式、工厂方法模式、原型模式、单例模式、外观模式、适配器模式、桥接模式、组合模式、装饰模式、享元模式、代理模式、命令模式、解释器模式、访问者模式、迭代子模式、中介者模式、备忘录模式、...
以上是关于工厂模式、单例模式和观察者模式的基本介绍和Java实现。这些设计模式在实际编程中有着广泛的应用,能帮助我们编写出更灵活、可维护的代码。在学习和使用这些模式时,应根据具体场景选择最适合的实现方式,...
本资源“一例读懂设计模式-单例模式、简单工厂模式.zip”旨在帮助初学者通过实例深入理解这两种重要设计模式:单例模式和简单工厂模式。以下是关于这两个模式的详细讲解。 1. **单例模式**: 单例模式是一种限制类...
1. **简单工厂**:简单工厂模式是一种创建型设计模式,它提供一个工厂类来负责创建对象,而无需暴露创建逻辑。客户端只需传递一个参数给工厂,工厂就会返回相应的对象。 2. **方法工厂**:通常,这是对简单工厂模式...
### 设计模式总结:模板设计模式与单例模式 #### 模板设计模式 模板设计模式是一种行为型设计模式,它定义了一个算法的骨架,并允许子类为算法的某些步骤提供具体的实现。通过这种方式,算法的基本流程保持不变,...
本篇文章将详细讲解代理模式、单例模式和工厂模式这三种设计模式,并通过Java代码实例进行演示。 1. **代理模式**: 代理模式是一种结构型设计模式,它为一个对象提供一个替身或代理,以控制对该对象的访问。代理...
python 项目里常用的设计模式 单例模式 组合模式 策略模式 抽象工厂 代理模式 工厂模式 观察者模式简单工厂 建造者模式 模板模式 桥接多维度 桥接模式 适配器模式 外观模式 享元模式 责任链组合模式
在给定的压缩包文件中,我们关注的是六种不同的设计模式:单例模式、简单工厂模式、策略模式、观察者模式、责任链模式以及模板模式。下面将对这六种模式进行详细阐述。 1. 单例模式: 单例模式确保一个类只有一个...
这里我们关注的是两种重要的设计模式:简单工厂模式和单例模式,它们都是在Java编程中经常被应用的。让我们深入探讨这两种模式及其源码实现。 **简单工厂模式**是一种创建型设计模式,它提供了一个创建对象的接口,...
本文将详细探讨两种重要的设计模式:单例模式和工厂模式,并结合视频教程与代码示例,帮助读者深入理解这两种模式的实现原理和应用场景。 首先,我们来探讨单例模式。单例模式是一种确保一个类只有一个实例并提供...
在这个文档中,我们关注的是三种设计模式:单例模式、适配器模式和工厂模式。 首先,单例模式是一种确保一个类只有一个实例并提供一个全局访问点的设计模式。这种模式的核心在于控制类的实例化过程,确保在任何情况...
工厂模式则是用于封装创建对象的过程,使得客户端无需关注具体对象的创建细节,例如简单工厂模式、工厂方法模式和抽象工厂模式。 结构型模式描述如何组合类和对象以获得更大的结构,如适配器模式、代理模式等。...
内容包括统一建模语言基础知识、面向对象设计原则、设计模式概述、简单工厂模式、工厂方法模式、抽象工厂模式、建造者模式、原型模式、单例模式、适配器模式、桥接模式、组合模式、装饰模式、外观模式、享元模式、...
工厂模式分为简单工厂、工厂方法和抽象工厂三种类型。例如,使用工厂方法模式创建不同类型的形状: ```java interface Shape { void draw(); } class Circle implements Shape { @Override public void draw() {...
本篇文章将深入探讨两种常见的设计模式:单例模式和简单工厂模式。 首先,单例模式是一种限制类实例化的模式,确保在整个应用程序中只有一个实例存在。其核心动机是控制共享资源的访问,例如日志记录器或者数据库...
、抽象工厂模式、单例模式、建造者模式、原型模式。 结构型模式(7): 适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。 行为型模式(11): 策略模式、模板方法模式、观察者模式、...