c中有效的java builder成语等价?
发布时间:2020-12-16 10:20:12 所属栏目:百科 来源:网络整理
导读:这是自从阅读Effective Java以来??我一直在使用的一个很好的习惯用法.我一直试图找到一个C等价物或类似的东西,但运气不好. GoF书中的传统建筑模式在我的案例中并不适用.这是一个复杂的对象,它有一个非常混乱的构造函数.下面是Java的一个小实现. class Compli
这是自从阅读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)的设计和演变中描述,它被称为命名函数参数 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |