首页 > 其他分享 >创建型模式——生成器模式

创建型模式——生成器模式

时间:2022-11-06 14:35:46浏览次数:54  
标签:创建 生成器 模式 参数 子类 构造函数

生成器模式 → 建造者模式、builder

一、意图

生成器模式是一种创建型设计模式, 使你能够分步骤创建复杂对象。 该模式允许你使用相同的创建代码生成不同类型和形式的对象。

二、问题

假设有这样一个复杂对象, 在对其进行构造时需要对诸多成员变量和嵌套对象进行繁复的初始化工作。 这些初始化代码通常深藏于一个包含众多参数且让人基本看不懂的构造函数中; 甚至还有更糟糕的情况, 那就是这些代码散落在客户端代码的多个位置。

如果为每种可能的对象都创建一个子类, 这可能会导致程序变得过于复杂。

例如, 我们来思考如何创建一个 房屋House对象。 建造一栋简单的房屋, 首先你需要建造四面墙和地板, 安装房门和一套窗户, 然后再建造一个屋顶。 但是如果你想要一栋更宽敞更明亮的房屋, 还要有院子和其他设施 (例如暖气、 排水和供电设备), 那又该怎么办呢?

最简单的方法是扩展 房屋基类, 然后创建一系列涵盖所有参数组合的子类。 但最终你将面对相当数量的子类。 任何新增的参数 (例如门廊类型) 都会让这个层次结构更加复杂。

另一种方法则无需生成子类。 你可以在 房屋基类中创建一个包括所有可能参数的超级构造函数, 并用它来控制房屋对象。 这种方法确实可以避免生成子类, 但它却会造成另外一个问题。

拥有大量输入参数的构造函数也有缺陷: 这些参数也不是每次都要全部用上的。

通常情况下, 绝大部分的参数都没有使用, 这使得对于构造函数的调用十分不简洁。 例如, 只有很少的房子有游泳池, 因此与游泳池相关的参数十之八九是毫无用处的。

三、解决方案

四、模式结构

五、伪代码

六、适用场景

七、实现方式

八、优缺点

九、与其他模式的关系

标签:创建,生成器,模式,参数,子类,构造函数
From: https://www.cnblogs.com/nxf-rabbit75/p/16862537.html

相关文章

  • java创建文件,查看文件练习
       查看文件 ......
  • IO流中常用的创建文件操作
    1.newFile(Stringpathname)//根据路径构建一个file对象 2.newFile(Fileparent,Stringchild)//根据父目录文件+子路径构建 3. newFile(Stringparent,Str......
  • 23种设计模式-工厂方法模式介绍加实战代码
    1、描述工厂方法模式是对简单工厂模式的抽象提取。有一个抽象的Factory类(可以是抽象类和接口),这个类将不再负责具体的产品生产,而是只制定一些规范,具体的生产工作由其子类......
  • 代理模式学习
    转自:https://www.runoob.com/design-pattern/proxy-pattern.html1.例子接口:实体类:  代理类: 其数据成员包含了一个被代理的类对象。 通过代理类来实现对原类的......
  • 关于FTP服务-主动模式与被动模式-以及防火墙的开通说明
    背景:因最近一个项目,需要在一台服务器上搭建FTP服务,还要准备好防火墙,能保障客户端能正常访问这里涉及到两个问题是需要我们深思和考虑的:第一个问题:首先我们得知道FTP是因......
  • bean的创建生命周期
    spring创建对象UserService.class->无参构造方法->得到对象->依赖注入(属性赋值)->初始化前方法(@PostConstruct)->初始化方法(InitializingBean)->初始化后(AOP)->bean......
  • SAP Spartacus SSR 模式下 index.html 页面的响应逻辑调试
    入口:所有的regularroute都使用universalengine:简而言之,AngularUniversal是Angular的预渲染解决方案。在普通的单页应用程序中,我们通常将数据带到客户端,然后在......
  • 桥接模式
    两个维度的桥接模式用桥接模式实现在路上开车这个问题,其中,车可以是car或bus,路可以是水泥路或沥青路。 类图  java  packagerjsj.no9;publicclassCar......
  • 享元模式
    围棋设计一个围棋软件,在系统中只存在一个白棋对象和一个黑棋对象,但是它们可以在棋盘的不同位置显示多次。 类图  Java  packagerjsj.no13;/***客户......
  • 装饰模式
    手机功能的升级用装饰模式模拟手机功能的升级过程:简单的手机(SimplePhone)在接收来电时,会发出声音提醒主人;而JarPhone除了声音还能振动;更高级的手机(ComplexPhone)除了声音......