OOP中的单一责任原则

Rij*_*ijk 9 php oop single-responsibility-principle

在我的应用程序设计中,我通常将对象映射到数据库中的重要表.然后,对象处理与该数据相关的所有内容(包括链接表).因此,我例如已经建立了一个Activity对象,具有类似性质namedue_date,方法等load()save(),并且还方法等getParent(),getContributors()并且getTeam(),其返回(阵列)的其他对象.这是"坏"OOP,因为它违反了单一责任原则吗?

Dav*_*Far 5

这取决于具体情况和您拥有的确切代码:您的设计可能会触及多个职责,并且仍然是一个非常好的OOP并且可维护.

您是否使用类似的代码处理load()save()在每个班级?还是你委托范围内的任务,并于在几类用于此功能的其他对象?这将是继SRP之后的一半,仍然是根据您的设计.load()save()

如果没有,你的代码真的看起来有点臭.要检查它是否涵盖多重责任,请问自己:什么可能导致我班级的变化?在你的情况,我想至少尝试重构类似的代码load(),并save()在不同的班级达到上述情况,使

  • 可维护性大大提高,
  • 您仍然不需要更改客户的代码.

  • 我认为它是可维护的.重复很少,我使用DB抽象层.在`load()`方法中,我只运行(特定于类)查询来获取数据,进行一些预处理,比如在`name`等文本属性中转义HTML字符,并将数据分配给对象的属性. (2认同)