В этой статье описывается принцип и использование шаблона дизайна Java. Поделитесь этим для вашей ссылки, следующим образом:
Паттерн политики определяет ряд алгоритмов и инкапсулирует каждый алгоритм, что делает их заменяемыми друг на друга. Схема политики позволяет алгоритму независимо изменяться от клиентов, использующих его. Среди них класс Treesset и класс TreeMap в JDK используют шаблон политики. Эти два класса являются отсортированными классами сбора, а правила сортировки эквивалентны ряду алгоритмов, определенных в шаблоне политики, а класс сбора эквивалентен классу окружающей среды в шаблоне политики для пользователей. Только зная, что деревья и тройка отсортированы. Что касается того, как сортировать, это определяется алгоритмом сортировки.
Стратегическая модель состоит из трех частей: роль абстрактной политики, конкретная политическая роль и экологическая роль.
Абстрактная политическая роль : класс политики, обычно реализуемый интерфейсом или абстрактным классом.
Конкретная стратегическая роль : класс абстрактной стратегии реализован, а связанные с ними алгоритмы и поведение упакованы.
Роль окружающей среды : имеет ссылку на класс политики и в конечном итоге призван клиенту.
Вот простой пример кода шаблона политики:
1. Роль абстрактной стратегии : определить стратегию интерфейса.
Пакет com.test;/** * Стратегическая шаблона абстрактная роль * @author Zhouwen * */стратегия публичного интерфейса {public int Рассчитайте (int a, int b);}2. Конкретная стратегическая роль : реализовать интерфейс стратегии. В примере реализовано операция с добавлением, вычитанием, умножением и делением.
пакет com.test;/*** Стратегический режим политики класс* Класс реализации операций с добавлением* @author Zhouwen**/public Class AddStrategy реализует стратегию {@Override public int Расчет (int a, int b) {return a + b; }} пакет com.test;/*** Стратегический режим политики класс* Класс реализации операции вычитания* @author Zhouwen**/public Class suptractStrategy реализует стратегию {@Override public int Расчет (int a, int b) {return a - b; }} пакет com.test;/** * Стратегический режим политики класс * Класс реализации операции умножения * @author Zhouwen * */public Class MultyStrystragemety Recules Strategy {@Override public int Рассчитайте (int a, int b) {return a * b; }}пакет com.test;/*** Стратегический режим политики класс. }}
3. Роль окружающей среды : Определите ссылку на абстрактную роль в роли окружающей среды и выставьте метод расчета для клиента.
пакет com.test;/** * Класс среды политики * @author Zhouwen * */Общественная среда класса {стратегия частной стратегии; Общественная среда (стратегия стратегия) {this.strategy = стратегия; } // Использование для изменения политики public void setStrategy (стратегия стратегии) {this.strategy = стратегия; } публичная стратегия getStrategy () {return стратегия; } // Раскрыть вычислительный интерфейс для клиента, чтобы назвать публичный расчет int (int a, int b) {return straction.calculate (a, b); }}4. Наконец -то напишите клиентский код:
пакет com.test; public class client {public static void main (string [] args) {addStrategy addStrategy = new addStrategy (); Окружающая среда = новая среда (addStrategy); System.out.println (Environment.calculate (3, 4)); SuptractStrategy substrategy = new SuptractStrategy (); Environment.setStrategy (субстратегия); System.out.println (Environment.calculate (3, 4)); Мультистрагенная мультистратритегия = new Multiplystragety (); Environment.setStrategy (мультистратегия); System.out.println (Environment.calculate (3, 4)); Dividestrategy dividestrategy = new Dividestrategy (); Environment.setStrategy (Dividestrategy); System.out.println (Environment.calculate (3, 4)); }}Суммировать:
С System.out.println(environment.calculate(3, 4)); Этот код, мы не знаем, какой класс реализации называется. Только зная конкретный класс политики, принятый на роль окружающей среды, мы знаем, какой класс позвонить. Это может достичь разделения клиента и конкретного алгоритма политики, что позволяет программе легко переключаться, понимать и расширять.
Преимущества и недостатки модели стратегии:
преимущество:
1. Цель шаблона политики состоит в том, чтобы инкапсулировать каждый алгоритм в независимый класс с общим интерфейсом для набора алгоритмов, чтобы их можно было заменить друг на друга. Как указано в примере, политика заменяется методом SET.
2. Схема политики позволяет алгоритму изменяться, не влияя на клиента. Используйте шаблоны политики, чтобы отделить поведение от окружающей среды.
3. Класс окружающей среды отвечает за поддержание и запрос классов поведения, и различные алгоритмы предоставляются в конкретных стратегиях. Поскольку алгоритм и окружающая среда являются независимыми, модификация алгоритма не повлияет на окружающую среду и клиента.
недостаток:
1. Клиент должен знать все классы политики и решить, какой класс политики использовать по своему усмотрению.
2. Это вызовет много стратегий.
Для получения дополнительного контента, связанного с Java, читатели, заинтересованные в этом сайте, могут просмотреть темы: «Введение и расширенное учебное пособие по объектно-ориентированному программам Java», «Учебное пособие по структуре данных Java и алгоритм», «Суммарной навыки Java Dom Node», «Суммируют навыки работы навыков операции Java File File и Directory» и «Summary of Java CACEE CACEE».
Я надеюсь, что эта статья будет полезна для всех Java Programming.