java - 调用构造函数的设计模式

标签 java design-patterns constructor

我有一个具有两个不同构造函数的对象:

public class MyClass {
   public MyClass(arg1, arg2) {
       //constructor
   }

   public MyClass() {};

}

我只需要通过我的软件的特定类调用第二个(第一个可以在任何地方调用)。是否有专门针对这种情况的设计模式?

MyClass 和调用类位于两个不同的包中,因此包私有(private)构造函数不是解决方案。

最佳答案

如果没有设计模式,它可以用一种方式完成。将一个构造函数设置为 public,它将被所有类调用。另一个声明它是私有(private)的。现在把这个类和特定的放在同一个包中。

public class MyClass {
   public MyClass(arg1, arg2) {
       //constructor
   }

   MyClass() {};  // only for the class in the same package

}

所以现在公共(public)构造函数可以从所有类中使用,而包保护构造函数只能由同一包中的类调用。

另一种选择

你可以使用不同的工厂模式实现

public class MyClass {
   public MyClass(arg1, arg2) {
       //constructor
   }

   public MyClass() {}; 

}

和工厂

public class MyClassFactory{
    public static MyClass createMyClass(Object o){
        if (o instanceOf SpecificClass)
            return new MyClass();
        else
            return new MyClass(arg1,arg2);
    }
}

现在调用

MyClass mC = MyclassFactory.createMyClass(this);

N.B.. 我只是省略了参数。您可以在 createMyClass 方法中传递参数。

关于java - 调用构造函数的设计模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17407297/

相关文章:

java - 如何使用 Java Swing 制作动画数字计数器?

c# - 如何使聚合根方法仅可用于领域事件,而无其他。

c++ - 如何在没有 OO 的情况下关联值(value)和功能

java - Java 中的原型(prototype)模式——clone() 方法

java - 我应该在哪里放置构造函数的公共(public)代码?

java - 最好的日志文件格式是什么?

java - 一个套接字,多个http请求,不同的主机头但服务器返回缓存的主机头

java - 同时合并多个已排序数组

C++ 析构函数

android - Kotlin 抽象类二级构造函数