设计模式——建造模式

定义:将一个复杂对象的构建与它的表示分离,使得同样地构建过程可以创建不同的表示

使用场景示例
我们有一个产品,它包含了很多属性

    public class Product{
        private String name;
        private String num;
        private String price;
        private String weight;
    }

在构造的时候通常我们使用构造函数进行初始化,但是面对许多需要初始化的属性并且有时并不需要初始化所有的属性.�构造函数就要重载,并且带着长长的参数,而建造模式就是把构建分离出来
下面是代码

public class Product {
    private String name;
    private String num;
    private String price;
    private String weight;

    public Product(Builder builder) {
        this.name = builder.name;
        this.num = builder.num;
        this.price = builder.price;
        this.weight = builder.weight;
    }

    public static class Builder {
        private String name;
        private String num;
        private String price;
        private String weight;

        public Builder setName(String name) {
            this.name = name;
            return this;
        }

        public Builder setNum(String num) {
            this.num = num;
            return this;
        }

        public Builder setPrice(String price) {
            this.price = price;
            return this;
        }

        public Builder setWeight(String weight) {
            this.weight = weight;
            return this;
        }

        public Product create() {
            return new Product(this);
        }

    }

}
Product.Builder builder = new Product.Builder();
Product product = builder.setName("macbook").setNum("10").create();

这种模式随处可见,典型的AlertDialog

    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {
        AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());

        LayoutInflater inflater = getActivity().getLayoutInflater();
        View view = inflater.inflate(R.xxx, null);
        builder.setView(view).setNegativeButton(DISMISS, null);
        return builder.create();
    }

还有URI

Uri uri = new Uri.Builder()
    .scheme("xxx")
    .path(String.valueOf(R.drawable.xxx))
    .build();
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,314评论 19 139
  • 第5章 引用类型(返回首页) 本章内容 使用对象 创建并操作数组 理解基本的JavaScript类型 使用基本类型...
    大学一百阅读 8,449评论 0 4
  • 面向对象的六大原则 单一职责原则 所谓职责是指类变化的原因。如果一个类有多于一个的动机被改变,那么这个类就具有多于...
    JxMY阅读 4,485评论 1 3
  • "안녕." 어린 왕자가 말했다. "안녕." 철도의 전철수(전철기를 조정하는 사람)가 말했다. "여기서 ...
    潇漫阅读 3,707评论 0 3
  • 曾经很漫长的日子里,每天都过得没有安全感,会因为别人的一句话思前想后,会因为某个突然闯入自己生活的人不知所措。 无...
    糖豆yc阅读 2,738评论 0 0