JAVA设计模式 - 单例模式

JAVA设计模式 - 工厂方法模式

JAVA设计模式 - 抽象工厂模式

JAVA设计模式 - 原型模式

JAVA设计模式 - 建造者模式

1 . 创建型模式的定义

顾名思义就是创建对象的模式 , 创建型模式抽象了实例化的过程 . 它们帮助一个系统独立于如何创建 , 组合和表示它的那些对象 . 一个类创建型模式使用继承改变被实例化的类 , 而一个对象创建型模式将实例化委托给另一个对象 .

简单来说 , 就是改变原来哪种只有new创建对象的方式 , 用一些更优雅更解耦更容易扩展的方式进行实例对象的获取 .

使用创建者模式是为了提高系统的可维护性和可扩展性 , 提高应对需求变化的能力 .

2 . 创建型模式分类概述

创建型模式共有5种 , 单例模式 , 工厂方法模式(简单工厂模式) , 抽象工厂模式 , 原型模式 , 建造者模式
    在这些模式中有两个不断出现的主旋律 . 第一 , 它们都将关于该系统使用哪些具体的类的信息封装起来 . 第二 , 它们隐藏了这些类的实例是如何被创建和放在一起的 . 整个系统关于这些对象所知道的是由抽象类所定义的接口 . 因此 , 创建型模式在什么时候被创建 , 由谁创建 , 怎样被创建 , 以及创建什么这些方面给予了我们很大的灵活性 . 它们允许你用结构和功能差别很大的"产品"对象配置一个系统 . 配置可以是静态的 , 也可以是动态的 .

3 . 工厂模式间的关系

  • 工厂方法模式是简单工厂模式的扩展 , 由于使用了多态性 , 工厂方法模式保持了简单工厂模式的优点 , 而且克服了它的缺点 . 如果只有一个具体工厂类 , 工厂方法模式可以改造为简单工厂模式 .
  • 抽象工厂经常用工厂方法来实现 .
  • 抽象工厂模式是对象的创建模式 , 是工厂方法模式的进一步推广 . 抽象工厂模式是所有形态的工厂模式中最为抽象和最具一般性的一种形态 .
  • 工厂方法模式针对的是一个产品等级结构 ; 抽象工厂模式需要面对多个产品等级结构 .

4 . 创建型模式的应用场景

面对上述五种创建型模式 , 在实际的开发过程中 , 我们将如何选择最适合的模式呢 ?

当然 , 影响因素有很多 , 这需要我们学会去权衡各个创建型模式的利弊 , 自然在权衡之前 , 我们首先需要对各个创建型模式形成自己较深刻的见解 , 这样在面临抉择的时候才能根据实际需求作出最恰当的选择 .

通常来说 , 抽象工厂模式 , 建造者模式 , 原型模式都较工厂方法模式实现起来更加复杂一些 , 但是使用也更加灵活一些 . 但是越复杂 , 越灵活的东西实现起来自然也就越复杂 , 比如抽象工厂模式 , 在实现的过程中可能需要较多的工厂类来支撑 , 因为对于产品族中的各个具体产品都需要一个对应的工厂类来创建 . 通常 , 在软件设计之初 , 我们会从工厂方法模式开始设计 , 只有当系统中需要更大的灵活性或者说工厂方法已经不能很好地满足我们的设计理念的时候 , 此时 , 作为系统设计师的我们 , 便需要将设计向其他的创建型模式进行推进和演化 , 这当然也需要你对所有的创建型有一定的了解 , 这样才能在权衡各种设计模式时显得游刃有余

有些时候创建型模式是可以重叠使用的 , 有一些抽象工厂模式和原型模式都可以使用的场景 , 这个时候使用任一设计模式都是合理的;
    在其他情况下 , 他们各自作为彼此的补充:抽象工厂模式可能会使用一些原型类来克隆并且返回产品对象 .  
    抽象工厂模式 , 建造者模式和原型模式都能使用单例模式来实现他们自己;抽象工厂模式经常也是通过工厂方法模式实现的 , 但是他们都能够使用原型模式来实现; 
    通常情况下 , 设计模式刚开始会使用工厂方法模式(结构清晰 , 更容易定制化 , 子类的数量爆炸) , 如果设计者发现需要更多的灵活性时 , 就会慢慢地发展为抽象工厂模式 , 原型模式或者建造者模式(结构更加复杂 , 使用灵活); 
    原型模式并不一定需要继承 , 但是它确实需要一个初始化的操作 , 工厂方法模式一定需要继承 , 但是不一定需要初始化操作; 
    使用装饰者模式或者组合模式的情况通常也可以使用原型模式来获得益处; 
    单例模式中 , 只要将构造方法的访问权限设置为 private 型 , 就可以实现单例 . 但是原型模式的 clone 方法直接无视构造方法的权限来生成新的对象 , 所以 , 单例模式与原型模式是冲突的 , 在使用时要特别注意 .

JAVA设计模式 - 创建型模式总结相关推荐

  1. 从零开始学习Java设计模式 | 创建型模式篇:原型模式

    在本讲,我们来学习一下创建型模式里面的第四个设计模式,即原型模式. 概述 原型模式就是指用一个已经创建的实例作为原型,通过复制该原型对象来创建一个和原型对象相同的新对象. 这段话读起来有点绕,是不是? ...

  2. 【Java设计模式 - 创建型模式1】单例模式

    java设计模式之单例模式 简介 场景 实现 单例模式的几种实现方式 懒汉式,线程不安全 懒汉式,线程安全 饿汉式 双检锁/双重校验锁(DCL,即 double-checked locking) 登记 ...

  3. 从零开始学习Java设计模式 | 创建型模式篇:建造者模式

    在本讲,我们来学习一下创建型模式里面的最后一个设计模式,即建造者模式. 概述 建造者模式是指将一个复杂对象的构建与表示分离,使得同样的构建过程可以创建不同的表示. 读完这句话之后,我估计很多人都已经懵 ...

  4. 从零开始学习Java设计模式 | 创建型模式篇:抽象工厂模式

    在本讲,我们来学习一下创建型模式里面的第三个设计模式,即抽象工厂模式. 前言 前面介绍的工厂方法模式中考虑的是一类产品,如畜牧场只养动物.电视机厂只生产电视机(不生产空调.冰箱等其它的电器).计算机学 ...

  5. 七大设计原则与设计模式(创建型模式、结构型模式、行为型模式)

    七大设计原则 开闭原则.依赖倒置原则.单一职责原则.接口隔离原则.迪米特法则(最少知道原则).里氏替换原则.合成 (组合).聚合复用原则 开闭原则 定义: 一个软件实体如类.模块和函数应该对扩展开放, ...

  6. 设计模式 ~ 创建型模式 ~ 工厂模式 ~ Factory Pattern。

    设计模式 ~ 创建型模式 ~ 工厂模式 ~ Factory Pattern. 文章目录 设计模式 ~ 创建型模式 ~ 工厂模式 ~ Factory Pattern. eg. 简单工厂模式. 结构. 优 ...

  7. 设计模式-创建型模式-工厂模式(工厂三兄弟) TypeScript

    设计模式-创建型模式-工厂模式(工厂三兄弟) TypeScript 简单工厂模式 定义一个接口,三个具体类.然后书写如下,通过选择,生产出相应的对象 // 定义Shape接口 interface Sh ...

  8. 设计模式-创建型模式-建造者模式

    设计模式-创建型模式-建造者模式 建造者模式即生成器模式,将一个复杂的构建与它的表示分离,使得同样的构建过程可以创建不同的表示. 代码如下 // 产品类 public class Product{pu ...

  9. 设计模式-创建型模式-模板方法

    设计模式-创建型模式-模板方法 定义一个操作中的算法框架,将一些步骤延迟到子类中,使得子类可以不改变一个算法的结构即可重定义一个算法的步骤. protected 对于本包及其子类可见. 类图 代码 代 ...

最新文章

  1. N分类模型评估计算方法
  2. Css Div半透明
  3. 大话设计模式(十三 有了门面,程序员的程序会更加体面!)
  4. 处理字符串_7_判断字符串是字符串数字型
  5. php 栈、 出栈、入栈
  6. 一步步编写操作系统 11 实模式下程序分段的原因
  7. k8s安装读取内核modules_kubespray国内云平台一键部署k8s
  8. 使用IAR在线调试功能显示数据变化曲线
  9. win7 32位系统安装postmant无法正常启动。启动显示黑屏界面
  10. Informix常用操作方法命令
  11. 2014C++A:蚂蚁感冒(数组+判断)
  12. Android实现计算器布局(约束布局
  13. 阿里图标库运用于项目---实例
  14. java实现DFA 敏感词检测
  15. Redis集群搭建(单设备,多设备)
  16. 17-chan原理1-创建
  17. 天涯“大鹏金翅明王”语录
  18. Matlab图窗保存为pdf文件
  19. Python监控服务器显卡使用情况程序
  20. C语言将一个数插入到已排好序的数组中

热门文章

  1. centos7 下 的lamp 的安装原创详细教程
  2. Windows 网络通讯开发
  3. 关于cocos2dx导入安卓项目至eclipse的诸多问题
  4. cassandra入门
  5. less、Element-UI等安装配置
  6. Python_内置模块1
  7. Python_列表生成式
  8. JS 进阶知识点及常考面试题
  9. 用MATLAB将矩阵数据写入txt文件中,打开乱码原因
  10. 常量指针、指针常量以及指向常量的指针常量