Build模式

安卓有多少設計模式呢,答案是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

相關文章
相關標籤/搜索