我刚刚介绍这些东西,所以如果有人可以请给我一些建筑师与抽象工厂的例子"情况会非常感激。
答案 0 :(得分:2)
您可以将Builder
视为一种构造函数,而不是将所有输入参数同时提供给构造函数,您可以延迟提供所有参数,直到稍后。这对于随着时间的推移构建对象或将Builder实例传递给其他对象或方法非常有用,这样它们就可以添加它们的参数等。一旦添加了所有参数,调用构建器的build()
方法将只创建一个实例构建的对象。再次调用build()
将创建另一个相同的实例或根据构建器实现抛出错误。
在Java中,StringBuilder
是一个常见的Builder示例。 StringBuilders a允许您随着时间的推移追加/插入/删除字符或其他字符串。然后,当您完成构建String时,调用StringBuilder.toString()
将只创建一个新的String对象。这比将多个Stings连接在一起要高效得多,每个Java String连接都会创建一个新的String实例。
AbstractFactory
模式用于创建不同的Factory
类,其中每个工厂实例可以创建多种不同类型的对象。 Java中的AbstractFactory示例是JDBC类。 JDBC DriverManager
类是一个抽象工厂,它创建与数据库连接的不同Connection
实例。返回哪个Connection
实例取决于您使用的数据库以及您注册的驱动程序。 Connection
类是Factory
,可让您根据提供的参数值创建不同类型的Statement
对象。
Statement statement = myConnection.createStatement(sqlString);
Statement otherStatement = myConnection.createStatement(differentSqlString);