構建模式的定義:
將一個復雜的對象構建與它的表示分離開來,使用樣的構建過程可以創建不同的表示。
Builder 模式是一步一步創建一個復雜的對象,它充許用戶通過指定復雜對象類型和內容就可以構建它們。用戶不需知道其內部細節。Builder非常類似操象工廠模式,只有在使用中才能區別開來。一個使用例子:
package com.pdw.pattern;
?
/*
?* 小對象的創建接口
?*/
interface PartA{
?public void builderA();
?public void outPartAInfo();
}
interface PartB{
?public void builderB();
}
/*
?* 大對象創建接口
?*/
interface Builder{
?void buildPartA();
?void buildPartB();
?Produce getResult();
}
/*
?* 產品接口
?*/
interface Produce{
?public void OutProduceInfo();
}
/*
?* 構建部件
?*/
class Director{
?private Builder builder;
?
?public Director(Builder vbuilder){
??this.builder=vbuilder;
?}
?
?public void construct(){
??builder.buildPartA();
??builder.buildPartB();
?}
?
}
/*
?* 部件實現類
?*/
class PartAImpl implements PartA{
?public void builderA() {
??// TODO Auto-generated method stub
??System.out.print("PartA組裝完成...");
?}
?public void outPartAInfo() {
??// TODO Auto-generated method stub
??System.out.println("PartA 信息。。。 ");
?}
?
}
class PartBImpl implements PartB{
?public void builderB() {
??// TODO Auto-generated method stub
??System.out.println("構造部件B完成....");
?}
?
}
class ProduceImpl implements Produce{
?private PartA pa;
?private PartB pb;
?private ProduceImpl(){}
?public? ProduceImpl(PartA pa,PartB pb){
??this.pa=pa;
??this.pb=pb;
?}
?public void OutProduceInfo() {
??// TODO Auto-generated method stub
??pa.builderA();
??pb.builderB();
??pa.outPartAInfo();
??System.out.println("這里輸入了產品信息,當然產品還有很多功能方法沒寫呵");
?}
?
}
class Cbuilder implements Builder{
?PartA pa;
?PartB pb;
?public void buildPartA() {
??pa=new PartAImpl(); //具體子部件實現代碼
??
?}
?public void buildPartB() {
??
??pb=new PartBImpl();
?}
?public Produce getResult() {
??ProduceImpl pi=new ProduceImpl(pa,pb);
??return pi;
?}
?
}
?
public class BuilderImpl {
?
?
?/**
? * @param args
? */
?public static void main(String[] args) {
??// TODO Auto-generated method stub
??Cbuilder builder=new Cbuilder();
??Director d=new Director(builder);
??d.construct();
??Produce p=builder.getResult();
??p.OutProduceInfo();
?}
}
posted on 2006-06-29 22:52
有貓相伴的日子 閱讀(2260)
評論(0) 編輯 收藏 所屬分類:
Patterns