我现在有一类Message_Repository
具有类似的方法:OOP原则 - 如何构建类
getLocationDetailsByID($messageId),
getCustomerDetailsById($messageId),
getMessages(),
updateMessageForEmail(array $data), //this takes an array which includes the message ID
getLinkIndicatorById($messageId),
setIndicator($data) //this takes an array which includes the message ID
这些方法,其中在大多数情况下,我选择各种数据的所有数据库交互,并在某些情况下,我正在进行更新。
我发现,因为我充实了这一点,我的类的名字不再代表发生了什么事在班上,至少不完全。
是否有最好的做法是说一个Location_Repository
类和一个Customer_Repository
类,该类将容纳获取与主题相关的数据的方法?
仍试图理解单一责任。理论上它似乎很简单,但实际上我发现它更具挑战性,特别是当我的课程不断发展和变化时。绝对需要重构,但要确保我正确地思考这个问题。
编辑 我可能会添加与我的班级的名称混淆。它不是严格意义上的设计模式的“存储库”,而仅仅是我用来与数据库进行交互的类的命名约定。可能需要重命名它。
你能简单介绍一下这些功能的用途吗?你传递给这些功能的ID是什么?它是一个消息ID,还是位置/客户/ LinkIndicator ID? –
@NiettheDarkAbsol消息ID是数据库中各个表之间的主键,大多数方法都使用该消息ID来获取所需的数据,所以它被传递到我提到的所有方法中。有一个或两个其他方法(我的问题中没有列出)不接收消息ID。 – hyphen
我明白了。在这种情况下,你的构造函数应该使用这个ID,那么你应该把'getLocationDetails'作为对象的非静态方法,它会返回这些细节。 –