在制作可扩展和/或可插拔的cms时,有什么好的东西可以继承?

时间:2010-11-30 20:52:36

标签: design-patterns content-management-system

我可以看到创建数据库连接类有用的地方,扩展该类,在任何地方使用它,更改一个地方,用它提交查询等等。但是,除了数据库连接类,数据库设置,路径设置,您希望从顶级类继承的内容是什么?

为什么CMS构建者会这样做,以便你必须从顶级类继承?我猜任何人都可以破解页面并将原始php放入其中并使其工作但不是按照它的设计方式进行....但除此之外,设计师“让”你继承了那个类。有没有办法构建一个接口,检查你是否确实继承了你应该的继承?

我正在试图弄清楚究竟什么值得继承任何东西。扩展或插入模块还有更多内容吗?

1 个答案:

答案 0 :(得分:1)

我通常看到的特殊于CMS系统的OO继承的两个原因与持久性和表示层次结构有关。

如果您正在处理具有其自己的ORM的系统,则持久性会发挥作用。通过这种方式,您可以轻松地CRUD和查询实体,而无需新表。它还更容易为定义不同类型的实体之间的关系提供机会,这样文件夹类可能有一个getContents方法,返回一个其他实体的数组。

层次结构通过具有需要指定父实体的基类型而发挥作用。大多数CMS系统严重依赖于以某种父子方式表示内容或直接建模文件夹结构。因此,基类中的这种类型的质量可确保遵守。

就接口而言,实际上取决于您使用的语言。如果你有一个弱类型的系统,那么只要你的对象实现了正确的方法,你就不需要实现一个接口。如果你实际上正在扩展一个具体的顶层,你可能会发现在其内部算法中挖掘上述持久性并通过其中的层次结构进行解析。