【设计模式学习笔记】建造者模式
作者:互联网
当构造函数里的参数很多,并且有很多是非必填的参数时,这些参数可以通过写单独的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