这可能只是我,这就是为什么我在问这个问题。信息专家,不要问,SRP通常被一起提到最佳做法。但我认为他们是不对的。这是我在说的:
有利于SRP但违反的代码告诉不要问,信息专家:
Customer bob = ...; // TransferObjectFactory has to use Customer's accessors to do its work,// violates Tell Don't Ask CustomerDTO dto = TransferObjectFactory.createFrom(bob);
代码有助于告诉不要/信息专家,但违反SRP:
Customer bob = ...; // Now Customer is doing more than just representing the domain concept of Customer,// violates SRP CustomerDTO dto = bob.toDTO();
如果他们确实是不对的,那就是对我的OCD的证明。否则,请填写这些做法如何和平共处。谢谢。
编辑:有人想要定义术语 –
信息专家:具有操作所需数据的对象应主持操作
告诉不要问:为了做工作,不要求对象的数据;告诉对象做工作
单一责任原则:每个对象应该有一个狭义的责任