我目前正在参加CS2课程(数据结构),其中Java是使用的语言,我有兴趣使用传统的构造函数方法比较和对比对象实例.工厂方法.一个人比另一个代表更高程度的计算优雅吗?工厂方法是否会以类似于参数化构造函数的方式处理参数?例如:
public class Tester
{
private String name;
private int age;
// Parameterized constructor
public Tester(String myName, int myAge)
{
this.name = myName;
this.age = myAge;
}
}
从本质上讲,我非常好奇如何编写一个等效的工厂方法以及这样做的潜在好处.
谢谢,
〜凯特琳
解决方法:
工厂方法很好,因为它们可以返回对不一定是该类实例的对象的引用.它可以返回该类,子类型,甚至是null,并且通常以他们想要的方法可以进行任何操作.因此,您可以将选择类型的逻辑移动到您自己的代码中.您可以在适当的位置返回现有实例,从而节省堆空间等.
另一个基本的伪示例是Integer.forValue(),它可以实现整数,因此不会无缘无故地重新创建相同的不可变对象.另请参阅Executors.newXxxThreadPool().
一个基本的例子:
public class Tester
{
private String name;
private int age;
// Parameterized constructor
private Tester(String myName, int myAge)
{
this.name = myName;
this.age = myAge;
}
public static Tester getTester(String mn, int ag){
if(age>0){return new Tester(mn, ag);}
else if(age>80){return new OldPersonThatExtendsTester(mn, ag);}
//we'd need a public or otherwise accessible constructor above. It's a subtype!
else {return null;} //yes, this is possible
}
}
标签:java,oop
来源: https://codeday.me/bug/20190728/1565759.html