Build模式

来源:互联网 发布:直播破解软件 编辑:程序博客网 时间:2024/06/15 09:27

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



1 0
原创粉丝点击