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)
如何扩展此模式以包含具有不同构造函数的实现?
如果您总是要在自己的代码中构造 MyObject1/2 实例,则可以将它们设为私有包(默认权限)。“构建者”模式也可能有意义。
您能否详细说明如果对象的构造函数被公开,它如何/为什么重要?接口只定义功能需求,而不是构造需求。