Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Design patterns 当制作一个可扩展和/或可插拔的cms时,有什么好东西可以继承?_Design Patterns_Content Management System - Fatal编程技术网

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

Design patterns 当制作一个可扩展和/或可插拔的cms时,有什么好东西可以继承?,design-patterns,content-management-system,Design Patterns,Content Management System,我可以看到创建数据库连接类在哪些方面是有用的,扩展该类,在任何地方使用它,更改一个位置,用它提交查询,等等。但是,除了数据库连接类、数据库设置、路径设置之外,您希望从顶级类继承什么 为什么CMS建设者要这样做,以至于你必须从顶级继承?我想任何人都可以破解一个页面,将原始php放入其中并使其工作,但不是按照设计的方式……但除此之外,设计师“让”您继承该类。有没有一种方法可以构建一个接口来检查您是否真的像应该继承的那样继承 我想弄清楚到底是什么让继承任何东西都有价值。扩展或插入模块还有其他原因吗?这

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

为什么CMS建设者要这样做,以至于你必须从顶级继承?我想任何人都可以破解一个页面,将原始php放入其中并使其工作,但不是按照设计的方式……但除此之外,设计师“让”您继承该类。有没有一种方法可以构建一个接口来检查您是否真的像应该继承的那样继承


我想弄清楚到底是什么让继承任何东西都有价值。扩展或插入模块还有其他原因吗?这意味着什么?

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

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

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

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