使用Builder模式的目的就在于将构建复杂对象的过程和它的部件解耦,是解耦过程和部件,是为了将部件和组装过程分开。
Builder模式参与者:
1、 Builder,抽象工人
规定产生对象实例的接口
2、concreteBuilder,从事实际工作的工人
实现Builder接口,实现具体的业务逻辑
3、 Director,设计规划者
利用Builder接口产生对象实例,使用builder中定义的方法
4、 Client,最终客户
实例
public class BuilderSample{
public static void main(String[] args){
Director d = new Director(new Windows_windowBuilder());
System.out.println(d.createProduct().getView());
}
}
class Window
{ private String title;
private String button;
private String text;
public void setTitle(String s){
this.title = s;
}
public void setButton(String s){
this.button = s;
}
public void setText(String s){
this.text = s;
}
public String getView(){
return "Title:"+title+" Button:"+button+" Text:"+text;
}
}
interface WindowBuilder{
public String createTitle(String s);
public String createButton(String s);
public String createText(String s);
public Window createWindow();
}
class Windows_windowBuilder implements WindowBuilder{
Window awindow = new Window();
public String createTitle(String s){
System.out.println("Create a window Title:"+s);
return "window's title:"+s;
}
public String createButton(String s){
System.out.println("Create a window Button:"+s);
return "window's button:"+s;
}
public String createText(String s){
System.out.println("Create a window Text:"+s);
return "window's Text:"+s;
}
public Window createWindow(){
awindow.setTitle(createTitle("title"));
awindow.setButton(createButton("button"));
awindow.setText(createText("text"));
return awindow;
}
}
class Director
{
WindowBuilder builder = null;
public Director(WindowBuilder b){
this.builder = b;
}
public Window createProduct(){
return builder.createWindow();
}
}
小结:
1、复杂资源的“断肢”的回收再利用。
2、工厂模式是一个生产零件的产商,可以生产一个一种零部件,而builder模式是一个集成商,它生产出来的是成品。