前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >设计模式之创建型模式集合

设计模式之创建型模式集合

作者头像
孟君
发布2020-07-16 14:22:06
6330
发布2020-07-16 14:22:06
举报

创建型类模式将对象的部分创建工作延迟到子类,而创建型对象模式则将它延迟到另一个对象中。再来回顾一下各个行为模式的意图和结构。

一. 工厂方法模式的基本介绍

意图

定义一个用于创建对象的接口,让子类决定实例化哪一个类。Factory Method使一个类的实例化延迟到其子类。

结构

工厂方法模式的基本结构如下:

这里涉及到的参与者有如下几种:

  • 抽象工厂(Creator)角色
    • 声明工厂方法,该方法返回一个Product类型的对象。可
    • 可以调用工厂方法以创建一个Product对象。
  • 具体工厂(ConcreteCreator)角色
    • 实现抽象工厂接口,返回一个ConcreteProduct对象
  • 抽象产品(Product)角色
    • 产品对象共同的父类或共同拥有的接口。
  • 具体产品(ConcreteProduct)角色
    • 实现抽象产品定义的接口。工厂方法模式所创建的每一个对象都是某个具体产品角色的实例。

详见《工厂方法模式浅析

二. 抽象工厂模式的基本介绍

意图

提供一个创建一系列或相互依赖对象的接口,而无需指定它们具体的类。

结构

抽象工厂模式的基本结构如下:

这里涉及到的参与者有如下几种:

  • 抽象工厂(AbstractFcatory)角色
    • 声明一个创建抽象产品对象的操作接口。
  • 具体工厂(ConcreteFactory)角色
    • 实现创建具体产品对象的操作。
  • 抽象产品(AbstractProduct)角色
    • 为一类产品对象声明一个接口
  • 具体产品(ConcreteProduct)角色
    • 定义一个将被相应的具体工厂创建的产品对象
    • 实现AbstractProduct接口
  • 抽象工厂(AbstractFcatory)角色
    • 仅使用由AbstractFactory和AbstractProduct类声明的接口

详见《抽象工厂模式浅析

三. 单例模式的基本介绍

单例模式是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例类的特殊类。通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的控制并节约系统资源。

1、单例模式的意图和要点

确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例,这个类称为单例类,它提供全局访问的方法。单例模式是一种对象创建型模型。

从上述描述中包含了3个要点:

  • 某一个类只有一个实例
  • 它必须自行创建这个实例
  • 它必须自行向整个系统提供这个实例

2、饿汉式和懒汉式

根据单例的创建方式而言,单例的实现可以分为饿汉式和懒汉式两种。其中:

饿汉式是单例类被加载的时候就去创建一个单例实例而懒汉式是在真正需要的时候才去创建单例实例

饿汉式

饿汉式大致的图如下:

懒汉式

懒汉式单例和饿汉式单例的区别在于,懒汉式不是马上创建一个实例,而是在第一次被引用时才去创建单例实例。

懒汉式的类图结构如下:

详见《单例模式详解

四. 建造者模式的基本介绍

意图

将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。

结构

建造者工厂模式的基本结构如下:

这里涉及到的参与者有如下几种:

  • Builder
    • 为创建一个Product对象的各个部件指定抽象接口。
  • ConcreteBuilder
    • 实现Builder的接口以构造和装载该产品的各个部件
    • 定义并明确它所创建的表示
  • Director
    • 构造一个使用Builder接口的对象
  • Product
    • 表示被构造的复杂对象。ConcreteBuilder创建该产品的内部表示并定义它的装配过程。
    • 包括定义组成部件的类,包括将这些部件装配成最终产品的接口。

Note:建造者模式是体现局部和整体关系的,产品是一步步构建,最终形成的一定是一个整体。

五. 原型模式的基本介绍

意图

用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。

结构

原型模式的基本结构如下:

这里涉及的参与者有如下几种:

  • Prototype(抽象原型)
    • 通常由一个接口或者抽象类实现。此角色给出所有的具体原型所需的接口
  • Concrete Prototype(具体原型)
    • 实现一个克隆自身的操作
  • Client(客户)
    • 提出创建对象的请求,让一个原型克隆自身从而创建一个新的对象。
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-07-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 孟君的编程札记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一. 工厂方法模式的基本介绍
  • 二. 抽象工厂模式的基本介绍
  • 三. 单例模式的基本介绍
  • 2、饿汉式和懒汉式
    • 饿汉式
    • 四. 建造者模式的基本介绍
    • 五. 原型模式的基本介绍
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档