gpt4 book ai didi

design-patterns - 设计模式 - 在构建器和抽象工厂之间进行选择

转载 作者:行者123 更新时间:2023-12-04 04:36:52 25 4
gpt4 key购买 nike

阅读 GoF,在我看来,抽象工厂和构建器之间的唯一区别是后者有一个额外的抽象层来隐藏客户端的实现。但应该还有更多的东西,对吧?如果我们处理图形,构建器应该更有用,但为什么呢!?

我刚刚进入这个东西,所以如果有人能给我一些“构建器与抽象工厂”情况的例子,我将不胜感激。

最佳答案

你可以想到一个Builder作为一种构造函数,您可以将所有参数延迟到稍后提供,而不是将所有输入参数同时提供给构造函数。这对于随着时间的推移构建对象或将 Builder 实例传递给其他对象或方法非常有用,以便他们可以添加它们的参数等。一旦添加了所有参数,调用构建器的 build()方法将只创建构建对象的一个​​实例。调用 build()再次将创建另一个相同的实例或根据构建器实现抛出错误。

在 Java 中,一个 StringBuilder是一个常见的 Builder 示例。 StringBuilders 允许您随时间追加/插入/删除字符或其他字符串。然后当你完成构建字符串时,调用 StringBuilder.toString()将只创建一个新的 String 对象。这比将多个 Sting 连接在一起要高效得多,其中每个 Java 字符串连接都将创建一个新的 String 实例。
AbstractFactory模式用于创建不同的Factory每个工厂实例可以创建几种不同类型的对象的类。 Java 中的一个示例 AbstractFactory 是 JDBC 类。 JDBC DriverManager class 是一个抽象工厂,它创建不同的 Connection连接到数据库的实例。其中Connection返回的实例取决于您使用的数据库以及您注册的驱动程序。 Connection类(class)是 Factory它可以让你创建不同种类的 Statement对象取决于您给它的参数值。

Statement statement = myConnection.createStatement(sqlString);

Statement otherStatement = myConnection.createStatement(differentSqlString);

关于design-patterns - 设计模式 - 在构建器和抽象工厂之间进行选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19621161/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com