【发布时间】:2012-03-11 08:40:28
【问题描述】:
在现有项目中,我将继承一个声明为 Singleton 的 Controller 类(MVC),以便定义我自己的处理方式。如何适当地派生这个 Singleton 类?
首先,我扩展上下文和对这种继承的需求。
我添加到现有软件中的应用程序想要使用一个 MVC 模块,该模块执行与我愿意执行的任务几乎相同的任务。它使用相同的方法进行签名和轻微修改。重写我自己的 MVC 模块肯定是重复代码。现有模块本质上是面向软件另一部分的应用,我不能简单地使用相同的模块。但是被写成一个模型-视图-控制器模式,其中控制器是单例。我已经派生了 View。
其次,我怀疑我能否经典地派生 Singleton 类。
从继承类调用构造函数只会为父类调用 getinstance() 并且无法从派生类返回对象 (?)。
第三,这是我看到的一些处理方式。请评论/帮助我改进!
我将整个 Singleton 类复制到一个可以称为 AbstractController 的类中。我派生了两次这个类。第一个孩子是单例,采用父类的整体处理。第二个孩子是我的应用程序部分的控制器,具有自己重新定义的处理方式。
谢谢!
【问题讨论】:
-
在大多数情况下,如果一个类的基类是单例的,那么它完全没用:你永远不能创建派生类的任何实例,因为每个这样的实例也是基类,你不能再做一个。 (我可以想象“合理”的例外情况,但仅限于基类的设计专门考虑到派生的想法......)
标签: c++ oop design-patterns inheritance singleton