一, 构造器模式
构造器模式, 也被称为建造者, 生成器模式, 是设计模式中比较容易理解的模式之一.
定义: 将一个复杂对象的构建与它的表示分离, 使得同样的构建过程可以创建不同的表示.
上面的定义不太容易理解, 简单点, 构造器模式中的对象的属性是通过一个构造器来设置的, 最后返回一个不同属性的对象.
- public class Toy {
- private String head;
- private String body;
- private ArrayList<String> legs;
- private ArrayList<String> hands;
- public String getHead() {
- return head;
- }
- public void setHead(String head) {
- this.head = head;
- }
- public String getBody() {
- return body;
- }
- public void setBody(String body) {
- this.body = body;
- }
- public ArrayList<String> getLegs() {
- return legs;
- }
- public void setLegs(ArrayList<String> legs) {
- this.legs = legs;
- }
- public ArrayList<String> getHands() {
- return hands;
- }
- public void setHands(ArrayList<String> hands) {
- this.hands = hands;
- }
- static class Builder {
- private Toy toy;
- public Builder() {
- toy = new Toy();
- }
- public Builder setHead(String head) {
- toy.setHead(head);
- return this;
- }
- public Builder setBody(String body) {
- toy.setBody(body);
- return this;
- }
- public Builder setLegs(ArrayList<String> legs) {
- toy.setLegs(legs);
- return this;
- }
- public Builder setHands(ArrayList<String> hands) {
- toy.setHands(hands);
- return this;
- }
- public Toy build() {
- return toy;
- }
- }
- public static void main(String[] hh) {
- ArrayList hands = new ArrayList<String>();
- hands.add("left");
- hands.add("right");
- ArrayList legs = new ArrayList<String>();
- legs.add("left");
- legs.add("right");
- Toy toy = new Toy.Builder()
- .setBody("body")
- .setHands(hands)
- .setLegs(legs)
- .setHead("head")
- .build();
- }
- }
构造器模式适合相同的方法, 不同的执行顺序, 或者不同的展示方式, 比如系统配置.
构造器模式随处可见, Android 中的 AlertDialog 的构建就是采用了构造器模式.
与工厂方法模式不同, 构造器模式构造的对象的方法被构造器直接调用, 而非新增的方法, 这也间接地验证了构造器模式的定义.
二, Android 中的构造器模式
- new AlertDialog.Builder(this)
- .setIcon(R.drawable.find_daycycle_icon)
- .setTitle("提醒")
- .create()
- .show();
来源: http://www.bubuko.com/infodetail-2874244.html