什么被认为是更好的设计在这里?

ope*_*rog 1 architecture oop design-patterns

我希望这不是太主观.我无法决定这两个设计机会.

我有一个前端控制器模式.当用户浏览特定的URL时,我的框架会为此URL加载指定的View Controller.然后,View Controller会计算一些内容并加载视图模板,以显示结果.

现在想象你想创建一个像SO这样的网站.每个页面看起来非常相似:相同的标题,相同的菜单,相同的页脚.只是内容区域不同.您浏览"提问"页面,并希望在"布局"中显示"询问新问题"表单.

因此,我们RootViewController使用一个RootView模板来设置布局,并为内容添加占位符.和AskQuestionViewControllerAskQuestionView模板.

我们的Front Controller加载了这个AskQuestionViewController类.系统调用loadView()方法,然后调用viewDidLoad()方法.

选项A:AskQuestionViewController继承自RootViewController.

方法由系统调用,并parent::loadView()先调用.因此RootViewController有机会创建其RootView模板.接下来,loadView()加载AskQuestionView模板,并将其分配给模板的内容占位符RootView.

选项B:AskQuestionViewController不继承自RootViewController.

loadView()方法AskQuestionViewController的负载RootViewController第一.然后它加载自己的AskQuestionView模板,并将其分配给模板的内容占位符RootView.

这些视图控制器之间的唯一区别是,它们加载了不同的视图模板,并且它们具有不同的自定义方法来执行某些任务.即RootViewController能够组成导航菜单并突出显示当前访问的内容.没有别的东西RootViewController可以用来AskQuestionViewController.

哪种选择更好的设计?

Ale*_*lli 5

过度继承喜欢组合物原则表明是优选的.