一句话概述
建造模式,是一种对象构建模式。它可以将复杂对象的建造过程抽象出来(抽象类别),使这个抽象过程的不同实现方法可以构造出不同表现(属性)的对象。
建造者的实现
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());
}
}
打印结果
以上就是构造者模式。