我有一个顶级课程,让我们说学校。
还有几门课程扩展了学校课程。
通常情况下,如果我必须调用其中一个子类,我会使用:
new Math('aaa')
或new English(array('foo'))
;
每个子类都有不同的参数。
现在,更好的是:
1)在School类中创建工厂方法,所以:
School::Factory('aaa')
会根据给定参数返回Math('aaa')
类到Factory()方法
2)或者直接简单地调用每个子课程?
编辑:我只有两个子课程,我的问题是我不知道在生产代码中这样做是否值得一点简单。我只是检查哪些参数传递给Factory方法,并根据这些信息我调用这两个类中的一个。你觉得怎么样?一方面,我将能够编写更简单的代码。 另一方面,每当我需要添加新的子类时(尽管很少有机会这样做),我也需要更改Factory()方法,所以我在这里有依赖。
答案 0 :(得分:0)
1)在School类中创建工厂方法,所以:
你说你有2个课程延伸到学校。因此,学校不应该充当工厂。父类不应该知道它的子/子类。
2)或者直接简单地调用每个子课程?
或者你可以拥有一个带有createMath( aaa )
的“CourseFactory”或“LectureFactory”。或者视情况而定,可能是createLecture("math")
。
但是,在您的示例中,数学或英语扩展学校是没有意义的(除非您的意思是MathSchool和EnglishSchool,但我将其理解为MathCourse和EnglishCourse)