ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

【设计模式学习笔记】建造者模式

2022-05-16 22:33:25  阅读:151  来源: 互联网

标签:set 对象 Builder 建造 校验 笔记 参数 设计模式 self


当构造函数里的参数很多,并且有很多是非必填的参数时,这些参数可以通过写单独的set()方法进行设置。必填的参数写在构造函数里。
先new一个对象出来,然后通过set()方法设置其他参数。
但是会有如下三个问题:
1,当必填参数很多的时候,构造函数里会写很多。如果将参数通过set()设置,则没法写参数的校验逻辑;
2,如果可选配置参数之间有依赖关系或者约束关系,则没法写校验逻辑;
3,如果对象是不可变对象(对象创建完成后,不可改变内部的属性),则不能暴露set()方法。

通过建造者模式可以解决上述三个问题:
创建一个内部类或者单独一个类Builder()专门用于参数的设置和校验,首先new一个Builder()的对象,设置各种参数。然后通过调用Build()方法进行参数的统一校验。

e.g.
Class ParentClass()

  • private ParentClass()
    self.a = a
    self.b = b
    self.c = c
    self.d = d

  • Class Builder()
    Build()
    set_a()
    set_b()
    set_c()
    set_d()

ParentInstance = ParentClass.Builder()
.set_a()
.set_b()
.set_c()
.set_d()
.Build()

建造者模式是封装了类的对象的创建过程,和工厂模式有何区别?
1,工厂模式是创建不同但是相关类型的对象,比如继承自同一个父类或者接口下的不同实现。由给定的参数决定创建哪个类的对象。
2,建造者模式是解决单个类的属性过多时的问题,先设置所有属性,然后统一校验,最后创建对象。

标签:set,对象,Builder,建造,校验,笔记,参数,设计模式,self
来源: https://www.cnblogs.com/liushengchieh/p/16278846.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有