我们核心产品的一部分是网站 CMS,它使用各种页面小部件。这些小部件负责显示内容、列出产品、处理事件注册等。每个小部件由派生自基本小部件类的类表示。渲染页面时,服务器从数据库中获取页面的小部件,然后创建正确类的实例。工厂方法对吗?
Private Function WidgetFactory(typeId)
Dim oWidget
Select Case typeId
Case widgetType.ContentBlock
Set oWidget = New ContentWidget
Case widgetType.Registration
Set oWidget = New RegistrationWidget
Case widgetType.DocumentList
Set oWidget = New DocumentListWidget
Case widgetType.DocumentDisplay
End Select
Set WidgetFactory = oWidget
End Function
无论如何,这一切都很好,但随着时间的推移,小部件类型的数量已增加到大约 50 种,这意味着工厂方法相当长。每次我创建一种新类型的小部件时,我都会在该方法中添加另外几行代码,然后我的脑海中就会响起一个小警报,这可能不是最好的做事方式。我倾向于忽略那个警报,但它越来越响亮。
那么,我做错了吗?有没有更好的方法来处理这种情况?