Oop 继承设计

Oop 继承设计,oop,inheritance,Oop,Inheritance,现在,我有以下设计: Item |------------------------| ImageUploader | |--------------| | | | | AvatarUploader FaviconUploader NameChanger 项目 |------------------------| 图

现在,我有以下设计:

Item |------------------------| ImageUploader | |--------------| | | | | AvatarUploader FaviconUploader NameChanger 项目 |------------------------| 图像上传器| |--------------| | | | | 阿瓦塔鲁普洛德FaviconUploader姓名更改器 这些类是用户可以购买和使用的各种项目

但是,我正在添加一个新类
IconUploader
。与其他类不同,这不是一个可以使用的项,而是一个管理面板
ImageUploader
包含某些安全检查,以确保只上载安全的文件,
IconUploader
也需要这些预防措施

然而,我不知道该怎么办。理想情况下,我会使
ImageUploader
成为一个接口,但接口中不能有实际的代码,所以我不能这样做。我可以将
ImageUploader
移出
类层次结构,并使其函数保持静态,但我觉得这不对。它是?如果不是,那么什么是重组的最佳方式


注意:我正在使用PHP,如果这影响到什么的话。

您可能应该有一个
通用上传程序,然后每种类型的上传程序都可以指定一个有效文件列表,然后
通用上传程序将确保满足这些要求(以及您可能希望它执行的任何其他操作).

您需要一个抽象的、具有公共功能的
ImageUploaderBase
类。

您可以将上载程序的安全检查和公共上载功能移动到一个单独的上载程序类中,并使ImageUploader使用此上载程序类(所以所有派生类,如Avatar/FaviconUploader,都会使用它)

然后您可以让IconUploader使用Uploader(而不是从Item派生)


然后,您可以让ImageUploader和IconUploader实现一个IUploader接口,并将对接口的所有调用转发给Uploader类来实现。

对,但是我应该将这个类放在哪里?如果我将它保留在项目层次结构中,这会使ImageUploader成为一个项目,即使它不是。如果我将它移到ite之外m层次结构,由于对象只能扩展一个类,AvatarUploader不能同时是该类和项的子类,除非我将其设置为接口,但它不能包含任何代码。它位于
ImageUploader
之上。然后,
IconUploader
可以与
ImageUploader
处于同一级别。(所以,你将安全检查向上移动,它们都从中继承)。我想我沟通错误了。IconUploader上传图像,但它不是一个项目,与其他项目不同。@wai:啊。我想我有点困惑什么是
项目
。也许你需要走一条“验证引擎”的路线键入所有相关方都可以访问的对象,并以这种方式集中验证。