当前位置 : 主页 > 手机开发 > 其它 >

oop – 我应该如何构建这个类继承呢?

来源:互联网 收集:自由互联 发布时间:2021-06-19
我正在开发一个应用程序,用于将用户上传的图像/文档的数据库和目录从我们的生产服务器传输到开发服务器.该应用程序是用Coldfusion编写的,但我不认为该语言与这个问题相关 – 它更多
我正在开发一个应用程序,用于将用户上传的图像/文档的数据库和目录从我们的生产服务器传输到开发服务器.该应用程序是用Coldfusion编写的,但我不认为该语言与这个问题相关 – 它更多的是结构/架构问题,而不是语言特有的问题.

我将为我的示例编写伪代码,所以请不要选择语法.

当我看到类继承演示时,它通常是类似Student扩展Person(){}的简单.显然,学生是一个更专业的人,所以这是有道理的.

在我的应用程序中,我有一个类Site(),其中包含相关信息,如DSN,文件上传目录等.我在一个类中执行我的SQL导出,我的文件上载导出在另一个类中,这两个类都是从内部调用的网站类(伪代码):

class Site {
    public function exportSql() {
        sqlExport = new sqlExport(this.dsn);
        sqlExport.createDumpAndZipItAndStuff();
    }
    public function exportUploads() {
        uploadsExport = new uploadsExport(this.uploadDirectory);
        uploadsExport.copyAndZipFilesAndStuff();
    }
}

除了控制从应用程序前端请求的流量流之外,Site类不会执行任何操作,其他所有内容都将传递到其中一个导出类.

这对我来说很好,但我想正确地构建它.现在,我必须将Site的属性传递给导出类的构造函数,然后使用这些参数设置导出类的属性.这会导致大量重复.

让我的导出类继承Site类以便我可以直接访问属性是否合适?导出类不是更专业的站点,就像我之前给出的Person / Student示例一样.相反,他们只是为Site类执行繁重的工作.

如果这不是适合继承的情况,我应该如何构建应用程序?正如我之前所说,我现在正在做的方式有效,但我想借此机会更多地了解设计模式,并以有意义的方式编写代码.

当某事物是另一种事物时,应该使用继承.

就像狗是一种动物,因此它应该继承动物.

导出不是一种站点,因此它不应该继承它.

您正在寻找的是Composition. Export应该保留对它导出的站点的引用.然后,您可以在构建时将Site对象传递给它,并且可以在需要时从站点获取数据.

网友评论