Решить:
SensorManager sensorManager = (SensorManager) this.getSystemService(Context.SENSOR_SERVICE);
sensorManager.registerListener(new SensorEventListener()
{
int orientation = -1;
@Override
public void onSensorChanged(SensorEvent event)
{
if (event.values[1] < 6.5 && event.values[1] > -6.5)
{
if (orientation != 1)
{
Log.d("SensorLog", "Landscape");
}
orientation = 1;
}
else
{
if (orientation != 0)
{
Log.d("SensorLog", "Portrait");
}
orientation = 0;
}
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy)
{
// TODO Auto-generated method stub
}
}, sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER), SensorManager.SENSOR_DELAY_GAME);
Сэр корректен и Ваш коллега, необходимо считать GoF.
"Стратегическая модель позволяет алгоритмам варьироваться независимо от клиентов, которые используют их".
См.:
Технически, стратегии могут сделать то, что они хотят.
Только, когда "внешний контекст" диктует некоторое фиксированное и повторяемое поведение, не может быть получен в программатическом интерфейсе (назовите их "желательными свойствами"), что необходимо заботиться, что стратегии действительно substitutable а-ля Liskov относительно этих желательных свойств.
Я поддерживаю Ваше мнение. Различные стратегии могут сделать совсем другие вещи, пока они могут использоваться в том же контексте.
Например, если Вы хотите посетить каждый узел в дереве, действительные стратегии могли бы быть:
Все стратегии посетили бы узлы в другом порядке, все же цель (посещающий каждый узел) будет тем же. Таким образом, если порядок не имеет значения, любая стратегия соответствует Вашим потребностям.
FWIW, статья Wikipedia соглашается с Вами и никогда не слышала о ее положении.
Вы. Точка стратегии должна заменить алгоритмом. Поставляют ли они, тем же результатом является побочный продукт желаемого поведения.
Согласно "Главным первым Шаблонам разработки" (см. здесь), страница 24
"Стратегическая модель определяет семейство алгоритмов,
инкапсулирует каждого и делает их взаимозаменяемыми.
Стратегия позволяет алгоритму варьироваться независимо от
клиенты, которые используют его".
так сэр Вы корректны, по крайней мере, по словам людей, которые определили шаблон, но что они знают.
Первые два являются стратегиями. Becuase для любого входа они дадут Вам тот же самый ответ. последний не. Просто becuase, это дает Вам интервал, не делает это стратегией. Они должны СДЕЛАТЬ то же самое.
Они должны сделать то же самое, но это не означает, что они дают тот же самый результат. Примером мотивации от GoF является один из различных алгоритмов макета или различных алгоритмов назначения регистра. Стратегии имеют ту же цель - блоки макета текста и изображений на странице или присвоения виртуальных регистров к аппаратным регистрам - но они не должны создавать точно тот же результат.
Таким образом, если цель Strategy
в Вашем примере должен сделать любую арифметику с входом, затем каждым примером является стратегия той цели. Если цель состояла в том, чтобы суммировать массив, это передается, DoArithmatic
был бы назван CalculateSum
, и заключительному примеру не удалось бы соответствовать контракту стратегии и тем самым нарушить LSP.
Я также должен согласиться. Хорошим примером была бы стратегия калькулятора оценки. У Вас могли быть различные стратегии вычисления заключительной суммы счета в зависимости от нескольких переменных как количество объектов, тип клиента, поставка места назначения, и т.д. Каждая из тех стратегий, как определенно ожидали бы, возвратит различный результат, и это будут все еще считать Стратегической моделью.
Я думаю, что это было бы более корректно, чтобы сказать, что вопрос того, должны ли стратегии быть детерминировано идентичными, выходит за рамки определения стратегической модели.
Если функция всегда возвращает тот же результат для данных исходных данных, это детерминировано. Если две функции детерминированы, и они всегда возвращают то же значение для тех же исходных данных затем, они детерминировано эквивалентны. Они могут или не могут иметь тех же побочных эффектов; если они делают затем, они просто эквивалентны.
Обычно дело обстоит не так. Давайте рассмотрим пример, который, кажется, требует детерминированной эквивалентности: сортировка. Вы могли бы думать, что, если двум реализациям компаратора не удается возвратить тот же результат для тех же исходных данных затем, по крайней мере один из них должен быть дефектным, но это не обязательно имеет место.
Порядки сортировки варьируются между странами. Некоторый диакритический знак нечувствительно вида мест. Некоторые помещают McDuck с MacDuck и т.д. Это стратегии, это - идеальное приложение стратегической модели, и стратегии несомненно не детерминировано эквивалентны.
Вы побеждаете.