多一点真诚、多一点套路、少一点随意--- 构建者模式Builder
Android设计模式之建造者模式(Builder Pattern)
http://blog.csdn.net/hp910315/article/details/49405311
package com.pattern.entity;
public class Person {//这个是Product
private String name;
private boolean sex;
private int age;
private float height;
private float weight;
public Person(String name, boolean sex, int age, float height, float weight) {
this.name = name;
this.sex = sex;
this.age = age;
this.height = height;
this.weight = weight;
}
@Override
public String toString() {
return "Person{" +
"age=" + age +
", name='" + name + '\'' +
", sex=" + sex +
", height=" + height +
", weight=" + weight +
'}';
}
}
package com.pattern.builder;
import com.pattern.entity.Person;
public interface Builder {//抽象建造接口
public Builder setAge(int age);
public Builder setHeight(float height);
public Builder setName(String name);
public Builder setSex(boolean sex);
public Builder setWeight(float weight);
public Person create();
}
package com.pattern.builder;
import com.pattern.entity.*;
public class ConcreteBuilder implements Builder{//具体建造类
private String name;
private boolean sex;
private int age;
private float height;
private float weight;
public Builder setAge(int age) {
this.age = age;
return this;
}
public Builder setHeight(float height) {
this.height = height;
return this;
}
public Builder setName(String name) {
this.name = name;
return this;
}
public Builder setSex(boolean sex) {
this.sex = sex;
return this;
}
public Builder setWeight(float weight) {
this.weight = weight;
return this;
}
public Person create() {
return new Person(name, sex, age, height, weight);
}
}
package com.pattern.builder;
public class Director {//导演者
private Builder mBuilder;
public Director(Builder builder) {
mBuilder = builder;
}
public void construct(String name, boolean sex, int age, float height, float weight) {
mBuilder.setAge(age);
mBuilder.setName(name);
mBuilder.setSex(sex);
mBuilder.setHeight(height);
mBuilder.setWeight(weight);
}
}
package com.pattern.builder;
import android.content.Context;
import android.content.DialogInterface;
import android.os.Bundle;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import com.pattern.entity.Person;
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);
// Builder builder = new Builder();
// builder.setAge(18);
// builder.setName("xiaoming");
// builder.setSex(true);
// builder.setHeight(183);
// builder.setWeight(70);
//
// Person person = builder.create();
// Log.i(TAG, "onCreate: " + person.toString());
Builder builder = new ConcreteBuilder();
Director director = new Director(builder);
director.construct("xiaoming", true, 18, 183, 70);
Person person = builder.create();
Log.i(TAG, "onCreate: " + person.toString());
showDialog(this);
}
private void showDialog(Context context) {
AlertDialog.Builder builder = new AlertDialog.Builder(context);
builder.setIcon(R.drawable.ic_launcher);
builder.setTitle("敬告");
builder.setMessage("要退出app?");
builder.setPositiveButton("退出", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
MainActivity.this.finish();
}
});
builder.setNegativeButton("取消", null);
builder.create().show();
}
}