MSDeploy RunCommand Priviliges

Объясненный хорошо в этом статья

Java World Лично я склонен использовать интерфейсы для определения интерфейсов - т.е. части проектирования системы, которые определяют, как к чему-то нужно получить доступ.

весьма распространено, что у меня будет класс, реализовывая 1 или более интерфейсов.

Абстрактные классы я использую в качестве основания для чего-то еще.

следующее является выпиской из вышеупомянутой статьи JavaWorld.com статьи , автора Tony Sintes, 04/20/01

, Интерфейс по сравнению с интерфейсами Выбора абстрактного класса

и абстрактными классами не является альтернативным суждением. Если необходимо изменить дизайн, сделайте его интерфейсом. Однако у Вас могут быть абстрактные классы, которые обеспечивают некоторое поведение по умолчанию. Абстрактные классы являются превосходными кандидатами в средах разработки приложения.

Абстрактные классы позволяют Вам определить некоторые поведения; они вынуждают Ваши подклассы предоставить другим. Например, если у Вас есть среда разработки приложения, абстрактный класс может предоставить услуги по умолчанию, такие как обработка событий и обработка сообщений. Те сервисы позволяют Вашему приложению включать к Вашей среде разработки приложения. Однако существует некоторая специализированная функциональность, которую только может выполнить Ваше приложение. Такая функциональность могла бы включать запуск и завершить работу задач, которые являются часто зависящими от приложения. Таким образом вместо того, чтобы пытаться определить то поведение само, абстрактный базовый класс может объявить абстрактное завершение работы и запустить методы. Базовый класс знает, что ему нужны те методы, но абстрактный класс позволяет Вашему классу признать, что он не знает, как выполнить те действия; это только знает, что должно инициировать действия. Когда пора запустить, абстрактный класс может назвать метод запуска. Когда базовый класс называет этот метод, Java называет метод определенным дочерним классом.

Многие разработчики забывают, что класс, который определяет абстрактный метод, может назвать тот метод также. Абстрактные классы являются отличным способом создать запланированные иерархии наследования. Они - также хороший выбор для нелистовых классов в иерархиях классов.

Класс по сравнению с интерфейсом

Некоторые говорят, что необходимо определить все классы с точки зрения интерфейсов, но я думаю, что рекомендация кажется небольшим экстремальным значением. Я использую интерфейсы, когда я вижу, что что-то в моем дизайне будет часто изменяться.

, Например, Стратегическая модель позволяет Вам подкачать новые алгоритмы и процессы в Вашу программу, не изменяя объекты, которые используют их. Медиаплеер мог бы знать, как играть CD, MP3s и wav файлы. Конечно, Вы не хотите к hardcode те алгоритмы воспроизведения в плеер; это будет мешать добавлять новый формат как AVI. Кроме того, Ваш код будет замусорен бесполезными операторами выбора. И добавить оскорбление травмы, необходимо будет обновить те операторы выбора каждый раз, когда Вы добавляете новый алгоритм. В целом, это не очень объектно-ориентированный способ программировать.

Со Стратегической моделью, можно просто инкапсулировать алгоритм позади объекта. Если Вы делаете это, можно обеспечить новые плагины медиа в любое время. Давайте назовем сменный класс MediaStrategy. Тот объект имел бы один метод: playStream (Поток s). Таким образом для добавления нового алгоритма мы просто расширяем наш класс алгоритма. Теперь, когда программа встречается с новым типом среды, она просто делегирует игру потока к нашей стратегии медиа. Конечно, Вам будет нужна некоторая инфраструктура для надлежащего инстанцирования стратегий алгоритма, в которых Вы будете нуждаться.

Это - превосходное место для использования интерфейса. Мы использовали Стратегическую модель, которая ясно указывает на место в дизайне, который изменится. Таким образом необходимо определить стратегию как интерфейс. Необходимо обычно одобрять интерфейсы по наследованию, когда Вы хотите объект иметь определенный тип; в этом случае, MediaStrategy. Доверие наследованию для идентификационных данных типа опасно; это блокирует Вас в конкретную иерархию наследования. Java не позволяет множественное наследование, таким образом, Вы не можете расширить что-то, что дает Вам полезную реализацию или больше идентификационных данных типа.

21
задан Luke 7 December 2010 в 19:37
поделиться

1 ответ

Я нашел ответ, и оказалось, что я уже наполовину его закончил. В ссылке, которую я указал в своем вопросе, они упоминают, как добавить привилегии к учетной записи WMSvc, например, так:

sc privs wmsvc SeChangeNotifyPrivilege/SeImpersonatePrivilege/SeAssignPrimaryTokenPrivilege/SeIncreaseQuotaPrivilege

Что не удалось упомянуть, так это то, что вы должны перезапустить WMSvc, чтобы это вступило в силу.

49
ответ дан 29 November 2019 в 20:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: