构建(生成器模式)又叫建造者模式。举个例子,假如你想组装电脑,假设电脑就两个部件(CPU和主板)。由于你不会组装电脑,所以必须去电脑城找人组装。这时你有一个担心,担心别人坑你,偷工减料,只装了CPU或主板,或什么也没干给你个电脑壳。这时,你可以使用生成器模式来防止这样的事发生。示例代码如下: 
public class Computer { 
        List<String> parts = new ArrayList<String>(); 
        public void Add(String part){ 
                parts.add(part); 
        } 
} 
public abstract class Builder {                   //这个抽象类就是你给装机人员定义的规则,不符合规则的不能给我装机 
        public abstract void AddCPU(); 
        public abstract void AddMainBoard(); 
} 
public class Person1 extends Builder { 
        public Computer pc = new Computer(); 
        public void AddCPU() { 
                pc.Add("Intel_CPU"); 
        } 
        public void AddMainBoard() { 
                pc.Add("Intel_MainBoard"); 
        } 
} 
public class Person2 extends Builder { 
        public Computer pc = new Computer(); 
        public void AddCPU() { 
                pc.Add("AMD_CPU"); 
        } 
        public void AddMainBoard() { 
                pc.Add("AMD_MainBoard"); 
        } 
} 
public class Director { 
        public void zhuangPc(Builder builder){ 
                builder.AddCPU(); 
                builder.AddMainBoard(); 
        } 
} 
public class Test { 
        public static void main(String[] args) { 
                Director I = new Director(); 
                Person1 p1 = new Person1(); 
                Person2 p2 = new Person2(); 
                I.zhuangPc(p1); 
          //   I.zhuangPc(p2); 
        } 
} 
******************************************************************************************************************************************* 
与抽象工厂设计模式(http://bbs.itheima.com/thread-7809-1-1.html)的区别: 
① 建造者模式更注重产品的规则,比如规定符合要求的产品必须有什么部分组成,而抽象工厂设计模式更注重工厂的规则,比如规定符合要求的工厂必须能生产什么产品。 
② 两种设计模式的目的不同:建造者模式其实重点利用了接口或抽象类的定义规范这一作用,要的只是一种规范。抽象工厂设计模式重点利用了接口或抽象类的多态这一作用,要的是具体类和代码的分离,便于实现不同工厂之间的转化。 
 
 
 
 
 |