c中有效的java builder成语等价?

c中有效的java builder成语等价?,第1张

概述这是自从阅读Effective Java以来​​我一直在使用的一个很好的习惯用法.我一直试图找到一个C等价物或类似的东西,但运气不好. GoF书中的传统建筑模式在我的案例中并不适用.这是一个复杂的对象,它有一个非常混乱的构造函数.下面是Java的一个小实现. class ComplicatedObject { private String field1; private Stri 这是自从阅读Effective Java以来​​我一直在使用的一个很好的习惯用法.我一直试图找到一个C等价物或类似的东西,但运气不好. GoF书中的传统建筑模式在我的案例中并不适用.这是一个复杂的对象,它有一个非常混乱的构造函数.下面是Java的一个小实现.

class Complicatedobject {    private String fIEld1;    private String fIEld2;    private int      fIEld3;    private Complicatedobject(Builder builder) {            this.fIEld1 = builder.myFIEld1;            this.fIEld2 = builder.myFIEld2;            this.fIEld3 = builder.myFIEld3;    }    public static class Builder {            private String myFIEld1 = "some default";            private String myFIEld2 = "some other default";            private int           myFIEld3 = -1;            public Builder() { }            public Builder fIEld1(String val) {                    this.myFIEld1 = val;                    return this;            }            public Builder fIEld2(String val) {                    this.myFIEld2 = val;                    return this;            }            public Builder fIEld3(int val) {                    this.myFIEld3 = val;                    return this;            }            public Complicatedobject build() {                    return new Complicatedobject(this);            }    }    public static voID main(final String[] args) {    //built like this            Complicatedobject obj = new Complicatedobject.Builder().fIEld1("blah").fIEld2("lol").fIEld3(4).build();    }}
解决方法 它不仅可以适应C,而且习惯用法改编自C语言.

我想我第一次听说这个成语是在Java出现之前. IIRC Bjarne Stroustrup在C第2版中提到了这一点,解释了为什么C不需要Smalltalk样式命名参数.

我可能会把我的约会错了,但这在C大约15岁.

编辑:它似乎首先在C(6.5.1)的设计和演变中描述,它被称为命名函数参数

总结

以上是内存溢出为你收集整理的c中有效的java builder成语等价?全部内容,希望文章能够帮你解决c中有效的java builder成语等价?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1219373.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-05
下一篇 2022-06-05

发表评论

登录后才能评论

评论列表(0条)

保存