В этой статье описывается функция переключения режима редактирования документов, реализованная Java на основе режима состояния. Поделитесь этим для вашей ссылки, следующим образом:
Определение шаблона
Режим состояния: когда внутреннее состояние объекта меняется, он позволяет изменить свое поведение, и объект выглядит так, как будто он изменил свой класс.
Примеры второго режима
1 Анализ шаблона
Мы используем режим редактирования документов для переключения, чтобы проиллюстрировать этот режим.
2 Статическая режим статической классовой диаграммы
3 примеры кода
3.1 Создайте устойчивость к интерфейсу состояния
пакет com.demo.state; import com.demo.context.context;/** * * * * * * * * / ** * Сохранить метод * * @param context */ public void said save (контекст контекста); / ** * Изменить метод * * @param context */ public void modify (контекст контекста); / ** * Новый метод * * @param context */ public void add (контекст контекста); / ** * Просмотр метода * * @param context */ public void view (контекст контекста);}
3.2 Создать контекст-контекст
пакет com.demo.context; import com.demo.state.istate;/** * Контекстная среда * * @author * */public Class Context {// Режим предварительного просмотра публичный статический окончательный окончательный результат int preview_mode = 0; // Редактировать режим общедоступного статического окончательного окончания int edit_mode = 1; // нынешнее государственное государственное состояние; // Изменение государственного публичного void changestate (состояние ISTATE) {this.state = state; } / ** * run * @param mode * / public void dowork (int mode) {system.out.println ("-------------------------------------"); this.state.convertstate (это, режим); this.state.add (это); this.state.save (это); this.state.modify (это); this.state.view (this); System.out.println("--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------3.3 Редактировать статус 1 EditState
пакет com.demo.state; import com.demo.context.context;/*** Редактировать состояние режима** @author**/public class EditState реализует istate {/*** vation*/public void convertstate (контекст, int mode) {if (mode = context.preview_mode) {context.changeState (newseState); }} / *** Новое в режиме редактирования* / public void add (контекст контекста) {system.out.println ("Редактировать режим [add] ..."); } / **! } / *** Редактировать режим сохранения* / public void said (контекст контекста) {System.out.println ("Редактировать режим [Сохранение] ..."); } / *** Редактировать режим представления* / public void view (контекст контекста) {System.out.println ("Редактировать режим [view] ..."); }}3.4 PreviewState
пакет com.demo.state; import com.demo.context.context;/*** Статус режима предварительного просмотра** @author**/public class previewstate реализует istate {/*** vadition*/public void convertate (контекст, int mode) {if (mode = context.edit_mode) {context.changestate (new editState (mode = edit.edit_mode) {context.changestate (new editStatate (); }} / *** Новое в режиме предварительного просмотра* / public void add (контекст контекста) {system.out.println ("Режим предварительного просмотра не поддерживает функцию [new]!"); } / *** Модификация режима предварительного просмотра* / public void modify (контекст контекста) {System.out.println («Режим предварительного просмотра не поддерживает функцию [Modify]!»); } / *** Сохранение режима предварительного просмотра* / public void said save (контекст контекста) {System.out.println («Режим предварительного просмотра не поддерживает функцию [Сохранение]!»); } / *** Просмотр режима предварительного просмотра* / public void view (контекст контекста) {System.out.println ("Режим предварительного просмотра [View] ..."); }}3.5 клиент -тестирование клиента
пакет com.demo; import java.util.random; import com.demo.context.context; import com.demo.state.editState;/** * Приложение клиента * * @author * */public class client {/** * @param args */public void main (string [] args) {контекст = new context (); context.changestate (new EditState ()); Случайный случайный = new Random (); for (int i = 0; i <5; i ++) {int r = random.nextint (2); System.out.println («Текущий режим:« + (r == 0? »Режим предварительного просмотра»: (r == 1? «Редактировать режим»: «" "))); context.dowork (r); }}}4 Результаты работы
Текущий режим: редактирование режима
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------.
Режим редактирования [новый] ...
Редактировать режим [Сохранить] ...
Режим редактирования [изменить] ...
Редактировать режим [View] ...
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------.
Текущий режим: редактирование режима
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------.
Режим редактирования [новый] ...
Редактировать режим [Сохранить] ...
Режим редактирования [изменить] ...
Редактировать режим [View] ...
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------.
Текущий режим: режим предварительного просмотра
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------.
Режим предварительного просмотра не поддерживает [новую] функцию!
Режим предварительного просмотра не поддерживает функцию [Сохранить]!
Режим предварительного просмотра не поддерживает функцию [Modify]!
Режим предварительного просмотра [View] ...
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------.
Текущий режим: режим предварительного просмотра
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------.
Режим предварительного просмотра не поддерживает [новую] функцию!
Режим предварительного просмотра не поддерживает функцию [Сохранить]!
Режим предварительного просмотра не поддерживает функцию [Modify]!
Режим предварительного просмотра [View] ...
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------.
Текущий режим: редактирование режима
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------.
Режим редактирования [новый] ...
Редактировать режим [Сохранить] ...
Режим редактирования [изменить] ...
Редактировать режим [View] ...
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------.
Три принципа дизайна этого образца
1 Принцип «открытый»
2 Принцип единой ответственности
Четыре случая использования
1 Поведение объекта взято из его состояния, и оно должно изменить свое поведение в соответствии с его состоянием в момент работы.
2 Операция содержит огромную многочасочную структуру, и эти ветви определяются состоянием объекта.
Статическая классовая диаграмма с пятью состояниями
Для получения дополнительного контента, связанного с Java, читатели, заинтересованные в этом сайте, могут просмотреть темы: «Введение и расширенное учебное пособие по объектно-ориентированному программам Java», «Учебное пособие по структуре данных Java и алгоритм», «Суммарной навыки Java Dom Node», «Суммируют навыки работы навыков операции Java File File и Directory» и «Summary of Java CACEE CACEE».
Я надеюсь, что эта статья будет полезна для всех Java Programming.