我看到一个在JAVA中的Builder模式实现,它不同于它的C#版本和Gang of Four书中的“经典”插图。Builder模式实现C#与JAVA
C# - Gang of Four version
Director director = new Director();
Builder b1 = new ConcreteBuilder1();
Builder b2 = new ConcreteBuilder2();
Product p1 = director.Make(b1);
Product p2 = director.Make(b2)
JAVA - link
Product p1 = new Product.Builder("p1").Name("Product1").Version("v1").Build();
Product p2 = new Product.Builder("p2").Name("Product2").Version("v2").Build();
我第一次看到的时候,我进入Android开发人员(我来自.NET世界)的JAVA用法 - 给我的JAVA版本比C#版本更优雅。
现在,底层实现有所不同,在JAVA示例中,Builder是嵌套的Product类,它的Build()方法返回其父类的构造实例;上面的C#解释与Abstract Factory更类似。
上面提到的一切都显然是2种不同的模式,虽然两者都是结构性的。有谁知道在C#中调用第二个示例吗?
我不能真正回答你的问题,但在C#中,java样式有时可以被对象初始化器替换,如下所示:'new Product.Builder {Name =“Product”,Version =“v1”}。 Build();' – flai 2012-03-31 21:20:33
您可以在C#中轻松实现“Java版本”(一个“流利”的构建器)。由于不同的可见性语义,实现细节略有不同,但可以使API以相同的方式读取。 – chris 2014-08-25 13:30:19