Инкапсуляция. Это именно то, что вы делаете для того, чтобы подклассы должны были помнить о блокировке - это также означает выставление поля блокировки и т. Д. Это детали реализации, которые должны быть инкапсулированы классом.
Создание метода OnSomeEvent
означает, что подклассам не нужно знать подробности того, как вы справляетесь с событием - у них просто есть способ его поднять. Это также уменьшает дублирование кода: есть один способ вызвать событие, вместо того, чтобы использовать этот код повсюду.
Я предпочитаю все мои поля как частные, если они не являются открытыми статическими полями только для чтения неизменяемых типов (например, string.Empty
) - и даже тогда я склонен отдавать предпочтение свойствам .