Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/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 如何设计具有多种类型的模型对象_Design Patterns_Model View Controller - Fatal编程技术网

Design patterns 如何设计具有多种类型的模型对象

Design patterns 如何设计具有多种类型的模型对象,design-patterns,model-view-controller,Design Patterns,Model View Controller,目前我正在进行基于MVC的项目,我有一个名为program的模型,它有超过25个子类型,子类型的问题是,根据公共属性将它们划分为组非常复杂,这里有一个示例: ProgramX has attributes 1,2,4 programY has attributes 2,4,7 programZ has attributes 3,6,7 programY has attributes 1,4,8 等等,这样做的最佳实践是什么?我试图通过为一组包含公共属性的子类型创建一个超类来抽象它,但是基于公共

目前我正在进行基于MVC的项目,我有一个名为program的模型,它有超过25个子类型,子类型的问题是,根据公共属性将它们划分为组非常复杂,这里有一个示例:

ProgramX has attributes 1,2,4
programY has attributes 2,4,7
programZ has attributes 3,6,7
programY has attributes 1,4,8

等等,这样做的最佳实践是什么?我试图通过为一组包含公共属性的子类型创建一个超类来抽象它,但是基于公共属性对它们进行分组确实很困难。有这样的设计模式吗?

我不确定这是否会是一个答案,但现在我们开始

事实上,您有25个子类型的
程序
类,这应该是一个错误方法的明确指示

您不应该扩展并试图将所有内容都推到单个继承树中,而应该从组件中组合
程序
实例,每个组件都提供特定的功能

我假设这些“属性”中的每一个实际上都构成了一些功能,因为在一个类中简单地包含
public
变量就意味着存在泄漏的封装(糟糕的做法)

如果类实际上是由独立的部分组成的,那么,为了与各种组件交互,您只需要提供一个高级接口

注意:设计模式不是“预先打包的解决方案”,而是在描述已经生成的代码时应该使用的名称

注2:模型不是一个类,而是一个包含业务逻辑的应用层。。。你所谓的“模型”实际上是