SRP : There should never be more than one reason for a class to change
Если у меня есть class A
, в обязанности которого входит выполнение taskA
. Нарушает ли обработка памяти внутри class A
SRP? Если да, то приемлемо ли это? Какие решения у нас есть?
Примечание. Использование delete
или a std smart_ptr
одинаково, это все еще своего рода обработка памяти (например: мы можем захотеть изменить unique_ptr auto_ptr и т. д.).
Вот как я думал, можно с этим справиться. Я не нахожу его достаточно хорошим, потому что MemoryHandler должен измениться по двум причинам: если A нужно больше атрибутов или если нам нужен другой способ обработки памяти.
Обратите внимание на примеры: обычно у вас будет много методов (функций-членов) и несколько атрибутов (переменных-членов). Мы можем предположить, что owned_ptr — это функтор (алгоритм/паттерн-стратегия) или что-то еще, необходимое для class A
и task A
.
Пример 1 (cpp):
class A {
Object* owned_ptr;
public:
taskA() { ... }
~A() { delete owned_ptr; }
};
Пример 2 (cpp):
class MemoryHandler {
Object* owned_ptr;
public :
Object* object() { return owned_ptr; }
~MemoryHandler() { delete owned_ptr; }
};
class A {
MemoryHandler data;
public:
taskA() { ... }
~A() { }
};
taskA
используетowned_ptr
? - person T.C.   schedule 24.05.2014