建造者模式

一句话概述

建造模式,是一种对象构建模式。它可以将复杂对象的建造过程抽象出来(抽象类别),使这个抽象过程的不同实现方法可以构造出不同表现(属性)的对象。

建造者的实现

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

以上就是构造者模式。

你可能感兴趣的:(建造者模式)