android builder模式,模式设计(三:Builder模式) (转)
模式設計(三:Builder模式) (轉)[@more@]
builder
本文中我將采用生產汽車的例子來講解builder 模式。
考慮如下問題:我要建造一部車,我們希望將這個復雜的的構建與其表示分離,使得同樣的構建過程可以創建不同的表示。譬如桑塔納,帕薩特等車,采用同一各構建過程就可構建同一對象的不同表示。
比較abstract factory和builder不同點是:(1)適用問題(2)構建方式。
builder? 是構造一個復雜對象;? (適用問題)
一步一步的構建并最終返回一個產品;? (構建方式)
abstract factory? 是側重于多個系列產品(一個復雜對象);? (適用問題)
產品是立即返回的? (構建方式)
正如以上所說,以下問題可以采用builder 模式。
[當創建復雜對象的算法應該獨立于該對象的組成部分以及他們的裝配方式]
:考慮我們的例子:車間將要裝配桑塔納轎車,我們可以一步步的裝配好轎車產品。
[當構造過程允許被構造的對象有不同表示]
:如果我們我們需要裝配桑塔納轎車現在要按照市場部門的意見稍作修改,譬如:將更改某一處設計,
然后推出一個新產品;
讓我們來了解builder 模式的結構:如圖
我們可以看到其參與者包括:
Builder(CarBuilder)
:為創建Product對象的各部分指定抽象接口;(CreateWindow(),CreateEnginee(),CreateWheel())
ConcerteBuilder(StnCarBuilder)
:實現Builder的接口以創建和裝配產品的各部分; (CreateWindow(),CreateEnginee(),CreateWheel())
:定義并明確創建的表示
:提供一個檢索產品的接口 (GetStnCar())
Director(Director)
:構造一個使用Builder接口的對象
Product(StnCar)
:表示被構造的復雜對象
:包含定義組成產品的類,包括將這些部件裝配成最終產品的接口
接下來讓我們先實現產品對象的定義:我們定義一個汽車父類:Car(這不是必需的)zz作為實現產品的接口,
一個子類StnCar來實現真正的產品;
class Car{
Car(){}
void addWindow( _window){}
void addWheel(Wheel _wheel){}
void addEnginee(Enginee _enginee){}
void Runs(){}
}
class StnCar extends Car{
void addWindow(Windows _window){}
void addWheel(Wheel _wheel){}
void addEnginee(Enginee _enginee){}
StnCar(){}
void Runs(){System.out.println("stncar is ok");}
}
接下來定義產品的各聚合體部件,我們定義桑塔納汽車的部件如下:
class Windows{
Windows(){}
}
class Wheel{
Wheel(){}
}
class Enginee{
Enginee(){}
}
接下來讓我們定義Builder和它的實現Builder既:StnCarBuilder。由他們來負責組合我們所需要的產品。
public class Testaaa
{
class? Builder{
void CreateWindow(){}
void CreateEnginee(){}
void CreateWheel(){}
void CreateStaCar(){}
StnCar GetStnCar(){return null;}
}
class StnCarBuilder extends Builder{
private StnCar? _stncar;
void? StnCarBuilder()? {_stncar=null;}
void? CreateWindow()? {Windows _window=new Windows();
_stncar.addWindow(_window);}
void? CreateEnginee()? {Enginee _enginee=new Enginee();
_stncar.addEnginee(_enginee); }
void? CreateWheel()? {Wheel _wheel=new Wheel();
_stncar.addWheel(_wheel);}
void CreateStaCar()? {_stncar=new StnCar();}
StnCar GetStnCar()? {return _stncar;}
}
我們現在來定義使用Builder接口的指導者Director:
class Director{
Car CreateProduct(Builder builder)
{builder.CreateStaCar();
builder.CreateWindow();
builder.CreateEnginee();
builder.CreateWheel();
return builder.GetStnCar();
}
}
最后我們測試我們的產品是否生產完畢。注意使用了car類。我們可以不再指定具體的產品,實現了abstract
factory 的某些優點。
public static void main(String[] args)
{? Director _d=new Director();
Car _car=null;
StnCarBuilder _stncarbuilder=new StnCarBuilder();
_car=_d.CreateProduct(_stncarbuilder);
_car.Runs();
}
}
總結
以上是生活随笔為你收集整理的android builder模式,模式设计(三:Builder模式) (转)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android实现翻牌效果,androi
- 下一篇: 优酷html5视频没有弹幕,优酷弹幕怎么