构建者模式(Builder Pattern)
构建者模式:将一个复杂对象的构造与它的表示分离,使同样的构造可以构造出不同的表示,这样的设计模式被称为构建者模式。
构建者模式主要需要以下几个部分组成:
1、需要构建的对象(例如Animal对象)
2、构建对象的实现类(例如AnimalBuilder对象),在该类中需要提供三种方法
(1)私有的构建对象(Animal)
(2)共有的为构建对象赋值的方法
(3)共有的构建对象方法(例如build方法,返回一个Animal对象)
(4)共有的静态创建构建者方法(非必需)
接下来就直接上代码:
package com.lcl.galaxy.design.pattern.builder; import lombok.Data; @Data public class Animal { private String eye; private String ears; private String nose; private String hair; }
package com.lcl.galaxy.design.pattern.builder; public class AnimalBuilder { private Animal animal = new Animal(); public static AnimalBuilder builder(){ return new AnimalBuilder(); } public AnimalBuilder eye(String eye){ animal.setEye(eye); return this; } public AnimalBuilder ears(String ears){ animal.setEars(ears); return this; } public AnimalBuilder nose(String nose){ animal.setNose(nose); return this; } public AnimalBuilder hair(String hair){ animal.setHair(hair); return this; } public Animal build(){ return animal; } }
测试方法
@Test public void builderTest(){ Animal animal = AnimalBuilder.builder().eye("blue").hair("yellow").build(); log.info("=========== {} =========== ", JSON.toJSONString(animal)); }
构建者模式与工厂模式的区别:工厂模式是创建千篇一律的对象,而构建者模式是可以根据自身需求创建出自定义的对象
构建者与seter方法或构造方法的区别:构造方法我们需要关注构造函数的传参顺序,而构建者模式不需要关心。setter方法是先创建一个对象,然后再set值,在没有完全赋值完成之前,就可能会被其他地方使用,而构建者模式,是必须等调用build方法后才会返回构建完成的对象。
------------------------------------------------------------------
-----------------------------------------------------------
---------------------------------------------
朦胧的夜 留笔~~
-----------------------------------------------------------
---------------------------------------------
朦胧的夜 留笔~~