安卓有多少设计模式呢,答案是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。具体的可到源码中查看。