1

我有一个顶级班,比方说学校。

还有几个课程扩展了学校课程。

通常,如果我必须调用其中一个子类,我会使用:

new Math('aaa'), 或new English(array('foo'));

每个子类都有不同的参数。

现在,什么更好:

1)在 School 类中创建工厂方法,所以:

School::Factory('aaa')Math('aaa')基于给定参数的类返回到 Factory() 方法

2)还是直接调用每个子类?

编辑:我只有两个子类,我的问题是我不知道这样做是否值得在生产代码中简化一点。我只是检查哪些参数传递给了 Factory 方法,并根据这些信息调用这两个类之一。你怎么看?

一方面,我将能够编写更简单的代码。另一方面,每次我需要添加新的子类时(尽管这样做的机会很少),我也需要更改 Factory() 方法,所以我在这里有一个依赖项。

4

1 回答 1

0

1)在 School 类中创建工厂方法,所以:

你说你有 2 个类扩展学校。因此,学校不应充当工厂。父类不应该对其子类/子类一无所知。

2)还是直接调用每个子类?

或者你可以有一个“CourseFactory”或“LectureFactory” createMath( aaa ),例如。或者视情况而定,也许createLecture("math")

但是,在您的示例中,数学或英语扩展学校是没有意义的(除非您指的是 MathSchool 和 EnglishSchool,但我将其理解为 MathCourse 和 EnglishCourse)

于 2013-03-08T15:33:50.220 回答