The context that I am most familiar with the principle of shared responsibility is the overall design of the system and can complement the strategic pattern regarding the grouping of components within the system.
Use the strategy template to determine the set of algorithms that the client uses interchangeably, then the principle of single responsibility can be used to determine where to group the client and the algorithms that the client uses in the system. You do not want to break the code of algorithm A if your work is performed exclusively in algorithm B and vice versa. For compiled languages, this can have a significant impact on the complexity of the re-factor cycle, version, and deployment. Why version and recompile the client and algorithms A, C and D when the only changes needed for algorithm B.
With this understanding of the principle of shared responsibility, I do not see that if a class that implements a strategy template violates SRP. The purpose of the customer class is to implement a strategy template, that is, customer responsibility. The purpose of the algorithms is to implement the logic for which they are responsible, and the principle of shared responsibility says that they do not group them together within the system, since they will change for various reasons. This is my $ 0.02.
source share