安卓有多少设计模式呢,答案是23种设计模式。今天主要是对Build模式,进行分析。
什么是Buid模式呢,定义是将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
定义就一句话,当了解完Buid模式,你就会明白这是对这个模式最好的理解了。当然我们需要有个例子出来就有更好的理解。我也是这么来学的。通过看例子,然后再对这句话重新理解,就会有深的体会。
Buid模式的使用是很多的,在我们的生活中,比如生产汽车,汽车会有轮胎,座位,发动机,方向盘各个部件。如果将这些部件组装成汽车会很漫长,也很复杂,对于这种,为了构建过程对外隐藏细节,使用buid模式将部件和组装过程分离。也就是部件一部分,组装过程一部分,各自能够扩张,但两者的耦合降到最低。
下面的例子直接复制到开发工具,即可运行,可以加深你的理解
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);
}
}
}
注意: 建造者模式主要用于“分步骤构建一个复杂的对象”,在这其中“分步骤”是一个稳定的算法,而复杂对象的各个部分则经常变化。
这里再提一下,Build模式在安卓中的使用,你也许已经使用过了AlertDialog.build。使用build来构建复杂的AlertDialog。具体的可到源码中查看。