1. 建造模式
1.1. 概述
l 在Windows中打开一个计算器,如果要你编写这个应用,你如何做?
l 写一个类,在构造函数里面将各个控件加上去?
l 考虑如下问题
l 将数字键全部改颜色
l 将最左边四个键放在最右边
l 很明显,事情变得非常麻烦
1.2. 解决方法:使用建造模式
编写一个类专门每个组件的创建,一个类进行调用每个组件
负责每个组件的创建,代码如下:
//由四个小模块组成 class Builder {//负责各个模块的生成 public Panel getPanel1(){ //以后修改时,只需要修改相应的函数 Panel p1 = null; //建造p1 return p1; } public Panel getPanel2(){ Panel p2 = null; //建造p2 return p2; } public Panel getPanel3(){ Panel p3 = null; //建造p3 return p3; } public Panel getPanel4(){ Panel p4 = null; //建造p4 return p4; } } |
组合每个组件的类,代码如下:
class Director{ Builder builder = new Builder() public void contruct(){ Panel p1 = builder.getPanel1(); Panel p2 = builder.getPanel2(); Panel p3 = builder.getPanel3(); Panel p4 = builder.getPanel4(); //组装 } } |
1.3. 建造模式要点
l 编写类Builder做实际的每个部分的建造工作
l 编写Director类对每个部分的建造工做进行调用,其中的组装过程由它控制
1.4. 建造模式小结
l 首先假设一个复杂对象是由多个部件组成的,并且改变的机会较大,Builder模式是把复杂对象的创建和部门的创建分别开来
l 练习:Frame上2个面板,第一个面板上有一个按钮,第二个上有一个文本框,现在要将他们组合在一起放在Frame上,用建造模式实现并且总结有什么好处。