考虑到这个带有业务逻辑的类:
public static class OrderShipper
{
public static void ShipOrder(Order order) {
AuthorizationHelper.AuthorizedUser();
using (new PerformanceProfiler()) {
OperationRetryHelper.HandleWithRetries(() => ShipOrderInTransaction(order));
}
}
private static void ShipOrderInTransaction(Order order) {
using (var transaction = new TransactionHelper()) {
ShipOrderInternal(order);
transaction.Commit();
}
}
private static void ShipOrderInternal(order) {
// lots of business logic
}
}
该类包含一些业务逻辑,并执行一些横切关注点。虽然毫无疑问,这个类违反了开放/封闭原则,但是这个类是否违反了单一职责原则? 我有疑虑,因为这个类本身不负责授权用户、分析性能和处理事务。
毫无疑问,这是一个糟糕的设计,因为该类仍然(静态地)依赖于这些横切关注点,但仍然存在疑问:它是否违反了SRP?如果是,为什么?