Вы можете сделать что-то вроде этого если у вас есть базовый класс, который все остальные, унаследованный от. Только базовый класс когда-либо узнает о функции internalSave, и все унаследованные классы будут вызывать сохранение и автоматически проверяться.
Изменить модификатор доступа участника (защищенный) на функцию сохранения в соответствии с вашими потребностями, но оставить internalSave конфиденциальным, чтобы избежать вызова этой функции и обхода проверки.
protected bool save(){
validate(); //Assuming this throws an exception to inform it is not valid
return internalSave();
}
private bool internalSave(){
saveRecord();
return true;
}
Если вы не можете иметь базовый класс, потому что уже существует, что вы не можете изменить, вы можете также посмотреть на использование метода расширения вместо
public static class BaseClassNameExtensions
{
public static bool ValidatedSave(this BaseClassName obj)
{
obj.validate(); //again assuming it throws an exception
return obj.save();
}
}
Нет, там нет, если вы его делаете. –
вы можете получить этот эффект ... но это немного сложнее ... https://en.wikipedia.org/wiki/Interceptor_pattern – DarkSquirrel42
можно использовать делегат и событие. –