创建型-工厂模式(Factory Method)
介绍
工厂方法模式是一种创建型设计模式, 其在父类中提供一个创建对象的方法, 允许子类决定实例化对象的类型。
调用工厂方法的代码 (通常被称为客户端代码) 无需了解不同子类返回实际对象之间的差别。 客户端将所有产品视为抽象的 运输
。 客户端知道所有运输对象都提供了方法, 但是并不关心其具体实现方式。
工厂方法模式示例:
我们将创建一个 Shape 接口和实现 Shape 接口的实体类。下一步是定义工厂类 ShapeFactory。
FactoryPatternDemo 类使用 ShapeFactory 来获取 Shape 对象。它将向 ShapeFactory 传递信息(CIRCLE / RECTANGLE / SQUARE),以便获取它所需对象的类型。
通过工厂类,实例化出具体的子类对象。
在 Java 中使用模式
识别方法: 工厂方法可通过构建方法来识别, 它会创建具体类的对象, 但以抽象类型或接口的形式返回这些对象。
1、java.util.Calendar#getInstance()
2、java.util.ResourceBundle#getBundle()?根据参数调用不同子类的方法
control类有多个子类
3、java.text.NumberFormat#getInstance()
4、java.nio.charset.Charset#forName()?根据参数调用不同子类的方法
CharsetProvider有两个子类,if中下面两个lookupXXX方法中也调用了charsetForName()方法
5、java.net.URLStreamHandlerFactory#createURLStreamHandler(String)
(根据协议返回不同的单例对象)
7、javax.xml.bind.JAXBContext#createMarshaller()
及其他类似的方法。
转:https://refactoring.guru/
转:https://www.runoob.com/design-pattern/factory-pattern.html