【发布时间】:2013-04-10 12:27:08
【问题描述】:
考虑这个类与业务逻辑:
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
}
}
该类包含一些业务逻辑,并执行一些横切关注点。虽然毫无疑问,这个类违反了Open/Closed Principle,这个类是否违反了Single Responsibility Principle?
我对此表示怀疑,因为该类本身不负责授权用户、分析性能和处理事务。
毫无疑问,这是一个糟糕的设计,因为该类仍然(静态地)依赖于那些横切关注点,但仍然:它是否违反了 SRP。如果有,这是为什么呢?
【问题讨论】:
-
如果您将责任设置为“发货订单”,我会说“不”
标签: c# oop design-patterns design-principles