Давайте объясним стратегическую модель простой способ:
у Вас есть класс Car()
с методом run()
, таким образом, Вы используете его этот путь на псевдо языке:
mycar = new Car()
mycar.run()
Теперь, можно хотеть измениться run()
поведение на лету, в то время как программа выполняется. Например, Вы могли бы хотеть моделировать моторный отказ или использование кнопки "повышения" в видеоигре.
существует несколько способов сделать это моделирование: использование условных операторов и переменной флага является одним путем. Стратегическая модель - другой: это делегирует поведение run()
метод к другому классу:
Class Car()
{
this.motor = new Motor(this)
// passing "this" is important for the motor so it knows what it is running
method run()
{
this.motor.run()
}
method changeMotor(motor)
{
this.motor = motor
}
}
, Если Вы хотите изменить поведение автомобиля, можно просто изменить двигатель. (Легче в программе, чем в реальной жизни, правильно?;-))
очень полезно, если у Вас есть много сложных состояний: можно изменить и поддержать их намного более легко.
Для этого есть встроенный способ:
[[yourTextField cell] setBackgroundStyle:NSBackgroundStyleRaised];
Это старый дешевый трюк: вы рисуете текст белым со смещением, а затем рисуете черный текст поверх него.
В рисовании текста есть крючок для теней. system, NSAttributedString NSShadowAttributeName. Но при тестировании выяснилось, что он убивает и субпиксельное сглаживание.