背景
20+种设计模式,实践ing。本wiki将阐述建造者模式(builder模式)。
这个模式的特点是:降低同系列对象的创建难度。
重点参考:https://www.bilibili.com/video/BV1Qx411o7tN?p=27
实践过程
需求分析
拿视频里面的例子来说:
客户端(client)想创建几个电脑对象,给不同的人使用,那么就会出现以下代码:
// 电脑类如下
@Data
public class Computer {
private String cpu;
private String hard;
private String gpu;
}
// 使用
public class Main {
public static void main(String[] args){
Computer c1 = new Computer();
c1.setCpu("i3");
c1.setHard("500G");
c1.setGpu("1080");
Computer c2 = new Computer();
c1.setCpu("i5");
c1.setHard("1000G");
c1.setGpu("1080");
}
}
是不是觉得每次都要new对象出来,而且还有进行赋值,非常的不爽,这里违反了一个法则:迪米特法则(即最小知道法则)。
相信每个程序员都只是想简简单单的把对象做出来,而不去关心设置对象属性的细节。
builder模式UML
实现代码
代码地址:https://gitee.com/wangtonggui/design_pattern
Computer类,有不同的属性(实际中的类可能更复杂)。最终是要建造computer。
ComputerBuilder类,定义建造者。其实就是定义每个组件的设置过程(重点:这个过程顺序可能是固定的,也就是说需要遵循一个装配的规范
)
实现一个建造者
实现指挥者,指挥者实施装配过程
客户端client,进行调用
大家会发现,GamePlayerComputer只需要按照之前的规范进行定义即可。
评价
建造者模式在框架中经常会被用到,其实在平常的开发中用的不多。博主之后将研究一下spring中对于建造者的使用,并进行博文阐述。