如何保护我的课程实现免受其他开发人员的影响?

Bic*_*ick 5 java constructor factory interface

考虑一下 interface

public interface IDoSomething {
   void DoAAA();
   void DoBBB();
   void DoCCC();
}
Run Code Online (Sandbox Code Playgroud)

和这两个实现

public class MyObject1 implements IDoSomething {
   public MyObject(int a, xObjx x)
    ..
}   

public class MyObject2 implements IDoSomething {
    public MyObject(int a, xObjx x)
    ..
}   
Run Code Online (Sandbox Code Playgroud)

我怎么能将实现类暴露给其他开发人员?具体如何防止以下情况?

IDoSomething C = new  MyObject2();
Run Code Online (Sandbox Code Playgroud)

使用工厂级的最佳做法是什么?

public class DoSomethingFactory {
    static IDoSomething getDoSomething(int a, xObjx x) {
        ...
    }
}
Run Code Online (Sandbox Code Playgroud)

如何扩展此模式以包含具有不同构造函数的实现?

Dav*_*vid 2

如果您总是要在自己的代码中构造 MyObject1/2 实例,则可以将它们设为私有包(默认权限)。“构建者”模式也可能有意义。

您能否详细说明如果对象的构造函数被公开,它如何/为什么重要?接口只定义功能需求,而不是构造需求。