Я использую свободное Автогорячая клавиша , тогда я определяю свои собственные ярлыки:
и т.д.
Более конкретный пример того, почему это полезно, сделает его более понятным. Предположим, что DrawingAPI1 инкапсулирует ваш графический драйвер, а DrawingAPI2 делает то же самое для вашего драйвера принтера. Тогда DrawingAPI - это общий API для вашей графической системы. Он позволяет нарисовать CircleShape на мониторе и распечатать его на листе бумаги, используя тот же код, вам нужно только передать различные реализации DrawingAPI. Однако, если вы передадите DrawingAPI в Shape.draw () вместо того, чтобы передавать его в конструктор, это будет более гибким, потому что тогда вы можете использовать один и тот же граф объектов для монитора и принтера.