ABAP设计模式之---“创建型模式汇总(Creational Patterns)”

本文总结了GoF设计模式中的创建型模式,包括工厂模式、单例模式、原型模式和建造者模式。创建型模式隐藏了实例化过程,提供灵活性和独立性。工厂模式从简单工厂到抽象工厂,提供了不同级别的灵活性。单例模式确保类只有一个实例。原型模式通过克隆创建新对象。建造者模式则分离了对象的构造和表示。通过了解和应用这些模式,开发者可以在设计中做出更好的选择。
摘要由CSDN通过智能技术生成

1. 意义

“创建型模式”是GoF设计模式的第一大类,主要包括了工厂模式、单例模式、原型模式和建造者模式4种。本篇,我们对创建型模式进行一个小结。

存在的意义:

  • 创建型模式隐藏了了类的实例化过程,客户端使用目标类时,不需要NEW,而是通过创建模式提供的实例化方法来获取对象
  • 这样,创建型模式在创建什么,谁创建它,它是怎么被创建的,以及何时创建这些方面提供了很大灵活性
  • 创建型模式可以独立使用,当然,也是可以结合使用的。例如工厂方法模式和单例模式结合,单例存放在工厂类中,工厂方法返回单例的实例对象。

在这里插入图片描述

典型代码:

下面给出了工厂模式、单例模式、原型模式和建造者模式的典型代码:

  • CL_Factory=>CREATE()
  • CL_Singleton=>GetInstance()
  • lo_instance->Clone()
  • lo_director->Construct( lo_builder)

使用原则:

  1. 在理想情况下,我们在合适的场景下,选择适合的创建型模式。但在实际开发过程中,我们是没办法预测未来、预测到所有的需求和场景,这也就是代码“重构”存在的意义。面对新的开发任务时,对于创建型模式,我们通常是从工厂方法模式开始,当设计者发现需要更大的灵活性时,通过代码重构向其它创建型模式演化。
  2. 设计者在设计标准之间进行权衡时,了解更多的设计模式,可以给架构选型提供更多的思路,这也是本篇博客汇总、对比各个创建型模式的意义 😃

2. 辨析

下表汇总了创建型模式,各位同学可通过对应的链接,导航至具体的模式,进一步查看解析和实例代码。

目的/场景典型代码
工厂模式家族(Factory Patterns Family)将一个类(或多个相关类)的实例化过程,封装到Create()工厂方法、工厂接口中CL_Factory=>CREATE()
单例模式(Singleton Pattern)Singleton类,定义一个GetInstance()操作,允许客户访问它的唯一实例。GetInstance()是一个静态方法,主要负责创建自己的唯一实例。CL_Singleton=>GetInstance()
原型模型(Prototype Pattern)在原型类中,实现一个克隆自身的操作clone(), 从而让一个原型可以克隆自身,从而创建一个新的对象。lo_instance->Clone()
建造者模式(Builder Pattern)Builder完成构造和装配各个部件,Director调用Builder,按Director定义的规则构建生产具体的Product实例lo_director->Construct( lo_builder)

便于更清晰的对比,下表中也展示了工厂模式家族的成员的特点。其实,工厂模式家族的核心点也即:将一个类(或多个相关类)的实例化过程,封装到Create()工厂方法、工厂接口中。

目的/场景典型代码
简单工厂方法模式(Simple Factory Method Pattern)将对象实例化的创建过程,封装在目标类的CREATE方法中。CL_TARGET=>CREATE( )
简单工厂模式(Simple Factory Method Pattern)将对象实例化的创建过程,封装在一个独立的类中。工厂类中包含分支结构,依据场景创建相应的实例。CL_FACTORY=>CREATE( iv_type )
工厂方法模式(Factory Method Pattern)定义一个用于创建对象的接口,让工厂类决定实例化哪一个生产类。工厂方法使一个生产类的实例化,延迟到对应的工厂子类中。每一个生产类,都有一个与之对应的工厂类。CL_FACTORY_A=>CREATE( ); CL_FACTORY_B=>CREATE( )
抽象工厂模式(Abstract Factory Pattern)提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。工厂类中提供了多个创建方法,分别负责相关类的实例化。一个工厂类,对应的多个相关的生产类。CL_FACTORY_A=>CREATE_USER( ); CL_FACTORY_A=>CREATE_PRODUCT( ). CL_FACTORY_B=>CREATE_USER( ); CL_FACTORY_B=>CREATE_PRODUCT( )

以上,是本篇对GoF创建型模式的总结,欢迎分享、留言。😉

本博客专注于技术分享,干货满满,持续更新。
欢迎关注❤️、点赞👍、转发📣!

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

十年铸器

给作者赏杯咖啡

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值