Class 父类中的静态方法引用子类
假设我有两个子类(psuedo代码): 男.级:Class 父类中的静态方法引用子类,class,oop,inheritance,Class,Oop,Inheritance,假设我有两个子类(psuedo代码): 男.级: include Person.class; class Male extends Person { ... } 女.班级: include Person.class; class Female extends Person { ... } 最后我有一个基类: Person.class: class Person { static function makePersonBySettings(settings) {
include Person.class;
class Male extends Person {
...
}
女.班级:
include Person.class;
class Female extends Person {
...
}
最后我有一个基类:
Person.class:
class Person {
static function makePersonBySettings(settings) {
var person;
if(settings.gender == 'male') {
person = new Male(settings.name);
}
else if(settings.gender == 'female') {
person = new Female(settings.name);
}
return person;
}
}
父级的静态方法取决于知道什么是Male.class和Female.class。我无法在Parent.class顶部导入子类(例如,import Male.class
),因为子类依赖于了解父类
解决此问题的最佳方法是什么?通过创建包含工厂方法的专用类,可以将工厂方法(makePersonBySettings)与父类解耦
class Person {
static function makePersonBySettings(settings) {
var person;
person = new self(settings.name);
return person;
}
}
self
将引用您的子对象
Male::makePersonBySettings(设置)
将返回一个Male
对象