3 创建型模式之

建造者模式是一步一步创建一个比较复杂的对象的创建型模式,它允许用户在不知道内部构建细节的情况下,可以更精细地控制对象的创建过程。该模式是为了将构建复杂对象的过程和它的部件解耦,使得构建过程和部件的表示隔离开来。

本例以组装一台电脑为例,电脑有CPU,硬盘,内存,当然还有其它的,本例只用这三个属性表示来组装一台电脑

代码如下 :

 1 /**
 2  * 组装一台电脑,需要安装硬盘,CPU,和内存条
 3  * 一台电脑
 4  */
 5 public class Computer {
 6     protected String HDD;       //硬盘
 7     protected String CPU;       //CPU
 8     protected String MEM;       //内存条
 9 
10     public Computer(String hdd,String cpu,String memory){
11         this.HDD = hdd;
12         this.CPU = cpu;
13         this.MEM = memory;
14     }
15 
16 
17     @Override
18     public String toString() {
19         return "HDD="+HDD+" CPU="+CPU+" MEM="+MEM;
20     }
21 
22     /*
23         内部有一个静态的ComputerBuilder类
24         ComputerBuilder内部的属性和Computer中是一样的
25         或者和Computer的子类中的属性是一样的
26     */
27     public static class ComputerBuilder{
28         protected String HDD;       //硬盘
29         protected String CPU;       //CPU
30         protected String MEM;       //内存条
31 
32         //设置HDD
33         ComputerBuilder setHDD(String hdd){
34             this.HDD = hdd;
35             return this;
36         }
37 
38         //设置CPU
39         ComputerBuilder setCPU(String cpu){
40             this.CPU = cpu;
41             return this;
42         }
43 
44         //设置MEM
45         ComputerBuilder setMEM(String mem){
46             this.MEM = mem;
47             return this;
48         }
49 
50         //创建一个Computer
51         Computer build(){
52             return new Computer(this.HDD,this.CPU,this.MEM);
53         }
54     }
55 
56 }

使用

Computer computer = new ComputerBuilder().setCPU("core i7")

    .setHDD("西部数据500G硬盘")

    .setMEM("8G")

    .build();

computer.toString();

注:设计模式交流学习群 632945466  欢迎所有热爱技术的大牛,小菜,一起学习讨论进步提高,欢迎随时批评指正