组织类/子类文件的最佳实践

vut*_*ran 1 php oop design-patterns code-organization organization

这更多的是一个偏好问题,但我想知道人们在组织应用程序的目录树来管理类和子类时更喜欢什么。

给定文件名=类名

A - 文件夹内的子类化

Foo.php

Foo/Bar.php// 扩展Foo

Foo/Bar/Baz.php// 扩展Foo\Bar

现实世界的例子

Post.php

Post/Media.php- 延伸Post

Post/Media/Image.php- 延伸Post\Media

Post/Media/Audio.php- 延伸Post\Media

B - 类名中的子类化

Foo.php

BarFoo.php

BazBarFoo.php

现实世界的例子

Post.php

MediaPost.php- 延伸Post

ImageMediaPost.php- 延伸MediaPost

AudioMediaPost.php- 延伸MediaPost


请分享您的想法。

mez*_*eza 6

一般来说,子类化是一种反模式。它将类紧密耦合在一起,并可能导致一些难以维护的代码。拥有带有控制反转的干净接口更为合适。然后,您最终会得到只完成一项工作的小组件。我要回答你的问题,但我需要告诉你为什么我这么认为:

如果您经常使用子类化,那么仅此一点就会产生巨大的耦合。表示文件系统中的耦合也是另一层,这将使以后修改代码变得非常困难。基于类/接口的职责的命名空间和打包已被证明对我来说是最好的方法。

这是一篇关于如何思考责任的好文章:http://blog.8thlight.com/uncle-bob/2014/05/08/SingleReponsibilityPrinciple.html

  • 是的,确实如此!:) 您可以让 Media 类具有通用 Media 必须具有的接口。例如,要制作多种“类型”的媒体,您可以使用装饰器模式。这里概述了 php:http://sourcemaking.com/design_patterns/decorator/php 基本上,您的图像和视频都会实现与媒体相同的接口,但会将这些方法委托给它们收到的主类实例被建造。最好用代码来解释:) https://gist.github.com/meza/1702a294825996aa35d6 (2认同)