安卓有多少設計模式呢,答案是23種設計模式。今天主要是對Build模式,進行分析。算法
什麼是Buid模式呢,定義是將一個複雜對象的構建與它的表示分離,使得一樣的構建過程能夠建立不一樣的表示。設計模式
定義就一句話,當了解完Buid模式,你就會明白這是對這個模式最好的理解了。固然咱們須要有個例子出來就有更好的理解。我也是這麼來學的。經過看例子,而後再對這句話從新理解,就會有深的體會。框架
Buid模式的使用是不少的,在咱們的生活中,好比生產汽車,汽車會有輪胎,座位,發動機,方向盤各個部件。若是將這些部件組裝成汽車會很漫長,也很複雜,對於這種,爲了構建過程對外隱藏細節,使用buid模式將部件和組裝過程分離。也就是部件一部分,組裝過程一部分,各自可以擴張,但二者的耦合降到最低。ide
下面的例子直接複製到開發工具,便可運行,能夠加深你的理解工具
public class TestClient {
public static void main(String[] args) {
TestClient testClient = new TestClient();
Bike bike = testClient.new Bike();
BikeBuilder builder = testClient.new ConcreteBikeBuilder();
BikeDirector director = testClient.new BikeDirector();
director.createBike(builder);
bike = builder.getBike();
System.out.println("車子信息:"+bike.toString());
}
public class Bike {
//自行車車架數量
int frameNumber;
//自行車輪子數量
int wheelNumber;
public Bike(){
frameNumber = 1;
wheelNumber = 2;
}
public int getFrameNumber() {
return frameNumber;
}
public int getWheelNumber() {
return wheelNumber;
}
@Override
public String toString() {
// TODO Auto-generated method stub
return "自行車"+"[車架="+getFrameNumber()+",輪子="+getWheelNumber()+"]";
}
}
public abstract class BikeBuilder {
//構建bike的框架
public abstract void BuildFrame(int frameNumber);
//構建bike的輪子
public abstract void BuildWheels(int wheelNumber);
//獲取構建好的完整的產品
public abstract Bike getBike();
}
/**
*
*構建自行車的各個部件
*/
public class ConcreteBikeBuilder extends BikeBuilder {
Bike bike;
public ConcreteBikeBuilder(){
bike = new Bike();
}
@Override
public void BuildFrame(int frameNumber) {
bike.frameNumber = frameNumber;
}
@Override
public void BuildWheels(int wheelNumber) {
bike.wheelNumber = wheelNumber;
}
@Override
public Bike getBike() {
return bike;
}
}
public class BikeDirector {
public void createBike(BikeBuilder concreteBuilder){
concreteBuilder.BuildFrame(2);
concreteBuilder.BuildWheels(4);
}
}
}
開發工具
注意: 建造者模式主要用於「分步驟構建一個複雜的對象」,在這其中「分步驟」是一個穩定的算法,而複雜對象的各個部分則常常變化。ui
這裏再提一下,Build模式在安卓中的使用,你也許已經使用過了AlertDialog.build。使用build來構建複雜的AlertDialog。具體的可到源碼中查看。spa