生成器模式又称为建造者模式,主要用于创建复杂的对象,这类对象通常有许多属性,需要根据业务设置或多或少的参数,如果把参数全部都放在构造方法或者初始化方法中就会显得很臃肿,通过生成器模式,我们可以把创建对象这个过程抽象出来分为多个步骤,可分为必须和非必需步骤,使用者可以根据自己的业务进行调用。
下面还是以搜索引擎为例,来看看生成器模式的套路,假设我们有一个搜索引擎类。
SearchEngine中name是必传参数,其它的是可选参数,根据这个特点实现Builder,我们通常会将Builder类放在其需要生成的类内部,申明为一个静态内部类,这样可以让生成器更好的控制权限。
生成器模式一般是在需要生成的类中定义一个名为Builder
的静态内部类,然后把需要设置的参数通过Builder暴露出来,在使用的时候可以通过链式调用来设置各种参数 ,最后通过build方法将创建好的对象返回。
通过生成器模式,可以将复杂的对象创建逻辑抽象出来,减少原来类的工作量,还能让创建对象的逻辑更加清晰、简洁。