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

漫谈模式之创建型模式小结

作者头像
孟君
发布2023-03-13 09:14:11
3930
发布2023-03-13 09:14:11
举报
文章被收录于专栏:孟君的编程札记

时间很快,不知不觉漫谈模式系列已经将设计模式-创建型篇写完。本文主要来简单回顾一下之前写的一些内容。

创建型模式的分类记忆

分类记忆

创建型模式大致分为如下几个部分:

创建“什么对象”

  • 简单工厂:提供静态方法把初始化实例时的工作放到工厂里进行
  • 工厂方法:采用抽象 + 多态实现。让子类决定实例化哪一个类,使一个类的实例化延迟到其子类。
  • 抽象工厂: 将不同产品等级结构的工厂创建抽象出来 ,一个抽象接口包含不同产品等级结构的工厂创建。

如何创建对象

  • 建造者模式:一步步完成对象的创建,最终返回一个整体。

只创建一个实例

  • 单例模式

使用克隆Clone复制对象

  • 原型模式:使用Clone方法复制对象

接下来,我们来回顾一下这几个模式的学习。

创建型模式的学习回顾

工厂模式

工厂模式有以下几种形态:

  • 简单工厂(Simple Factory)模式:又称静态工厂方法模式。
  • 工厂方法(Factory Method)模式:又称多态性工厂(Polymorphic Factory)模式
  • 抽象工厂(Abstract Fcatory)模式:又称工具箱(Kit或者Toolkit)模式。

在学习工厂模式的时候,我们使用了导入文件处理以及导出文件处理的实例进行说明。

1、简单工厂模式

将创建实例的工作与使用实例的工作分开,使用者不必关心类对象如何创建,实现了解耦。简单工厂模式的核心工厂类,这个类集中了所有的产品创建逻辑,需要判断在什么时候创建某种产品,当有新的产品需要增加的时候,不得不修改这个核心工厂类的代码

如上述示例中,再增加一个Pdf的文件处理器类PdfHandler,需要对核心的工厂类增加判断语句以支持新加入的产品。

详见:漫谈模式之简单工厂和工厂方法模式

2、工厂方法

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

使用抽象 + 多态的方式,可以保证:加入一个新的产品,在工厂方法模式中没有必要修改客户端,也没有必要修改抽象工厂角色或者其他已有的具体工厂角色。对于增加新的产品类而言,这个系统完全支持开闭原则。

详见:漫谈模式之简单工厂和工厂方法模式

3、抽象工厂

抽象工厂的意图:提供一个创建一系列或相互依赖对象的接口,而无需指定它们具体的类。支持不同产品体系结构,如我们实例中使用了导入和导出2个不同产品体系的实例。

它分离了具体的类。Abstract Factory模式帮助你控制一个应用创建的对象的类。因为一个工厂封装创建产品对象的责任和过程,它将客户与类的实现分离。Client通过他们的抽象接口操纵实例。产品的类名也在具体工厂的实现中被分离;它们不出现在客户端代码中。它有利于产品的一致性。

详见:漫谈模式之抽象工厂模式

单例模式

单例模式从类加载的过程分为饿汉式懒汉式。其中饿汉式可能存在多线程的问题。如:

多线程下出现创建不同实例的问题。此时,我们要解决的问题,就是如何保证线程安全,引出【线程安全策略】,包括:

  • 所有属性为final
  • 使用synchronized同步
  • 使用ThreadLocal
  • 使用Lock
  • 使用C.A.S

从安全策略保障的思路上,我们可以编写出多种单例的实现方式。

详见:漫谈模式之单例模式(多种实现方式的思考)

然后,针对对象的创建方式,除了new之外,还包括克隆、反射、序列化和反序列化。我们给出了这些方式对单例的破坏和防止。

详见:漫谈模式之单例模式(破坏和防护的思考)

最后,对通用型写单例模版进行了尝试和阐述。

详见:漫谈模式之单例模式(通用写法的思考)

建造者模式

首先,给出了属性复杂过程中,构造函数和静态方法的使用都对对象的创建带来了挑战。

然后,以规范化日志为示例给出建造者的示例。以及给出一种Supplier实现的通用的Builder模式写法。

详见:漫谈模式之建造者模式(由来和通用写法)

最后,也尝试了如果按顺序进行构建对象,引出扩展的Step Builder。

详见:漫谈模式之建造者模式(按步骤创建对象)

原型模式

以试卷随机组卷为示例讲解了原型模式。原型模式主要的是clone方法,涉及浅复制深复制。以及其它深复制的工具类,如使用Apache common-lang 以及 Gson。

详见:漫谈模式之原型模式

以上,是建造者模式的回顾和小结。接下来,将会对结构型模式进行讲解。

本文系转载,前往查看

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

本文系转载前往查看

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 创建型模式的分类记忆
  • 创建型模式的学习回顾
相关产品与服务
文件存储
文件存储(Cloud File Storage,CFS)为您提供安全可靠、可扩展的共享文件存储服务。文件存储可与腾讯云服务器、容器服务、批量计算等服务搭配使用,为多个计算节点提供容量和性能可弹性扩展的高性能共享存储。腾讯云文件存储的管理界面简单、易使用,可实现对现有应用的无缝集成;按实际用量付费,为您节约成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档