
# 用工厂方法替换构造函数
此重构允许用返回类实例的工厂方法替换类构造函数。
#### 执行重构
1. 在代码编辑器中，将光标放置在要用工厂方法替换的类构造函数上。
2. 单击右键展示上下文菜单，选择**"重构 \> 用工厂方法替换构造函数"**。
3. 在打开的**"用工厂方法替换构造函数"** 对话框中，提供要创建的工厂方法的名称及其包含类。如下图所示：
   
   图1用工厂方法替换构造函数   
   ![](https://support.huaweicloud.com/usermanual-codeartside/zh-cn_image_0000002377744277.png)
   
   
4. 单击**"重构"**以应用重构。
 
#### 示例
作为示例，将**InnerClass** 类构造函数替换为带有**newInnerClass**的工厂方法。
**重构前**
"com\\refactoring\\source\\ReplaceConstructor.java"文件内容如下：
```
class ReplaceConstructor {
   public static void main(String[] args) {
      new InnerClass("Hello", "World").print();
   }
   private static class InnerClass {
      private String message;
      public InnerClass(String hello, String world) {
         message = hello + ", " + world;
      }
      public void print() {
         System.out.println(message);
      }
   }
}
```
**重构后**
"com\\refactoring\\source\\ReplaceConstructor.java"文件内容如下：
```
class ReplaceConstructor {
   public static void main(String[] args) {
      InnerClass.newInnerClass("Hello", "World").print();
   }
   private static class InnerClass {
      private String message;
      private InnerClass(String hello, String world) {
         message = hello + ", " + world;
      }
      public static InnerClass newInnerClass(String hello, String world) {
         return new InnerClass(hello, world);
      }
      public void print() {
         System.out.println(message);
      }
   }
}
```
