一句話概述
建造模式,是一種對象構建模式。它可以將復雜對象的建造過程抽象出來(抽象類別),使這個抽象過程的不同實現(xiàn)方法可以構造出不同表現(xiàn)(屬性)的對象。
建造者的實現(xiàn)
package com.example.xiao.designpattern;
/**
* Created by xiao on 2017年4月23日,0023.
*/
public class Person {
private String mTitle="";//職位
private String mCall="";//稱呼
/**
* 設置職位
* @param title
*/
public void setTitle(String title) {
mTitle = title;
}
/**
* 通過姓氏設置稱呼(自動添加對應職位)
* @param lastName 姓氏
*/
public void setCallByLastName(String lastName) {
mCall = lastName+mTitle;
}
public String getCall(){
return mCall;
}
public static class Builder{
private String mTitle;
private String mLastName;
public Builder setTitle(String title) {
mTitle = title;
return this;
}
public Builder setCallByLastName(String lastName) {
mLastName = lastName;
return this;
}
public Person build(){
Person person=new Person();
person.setTitle(mTitle);
person.setCallByLastName(mLastName);
return person;
}
}
}
測試類
package com.example.xiao.designpattern;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
public class MainActivity extends AppCompatActivity {
private static final String TAG = "MainActivity";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void builder(View view){
//不用構造者模式構建對象
Person person=new Person();
person.setCallByLastName("張");
person.setTitle("局長");
Log.d(TAG, "不用構造者模式構建對象: "+person.getCall());
//用構造者模式構建對象
Person person1=new Person.Builder()
.setCallByLastName("張")
.setTitle("局長")
.build();
Log.d(TAG, "用構造者模式構建對象: "+person1.getCall());
}
}
打印結果

Paste_Image.png
以上就是構造者模式。