В этой статье описывается использование режима Memo для реализации уровня, пропагандирующих игры Java. Поделитесь этим для вашей ссылки, следующим образом:
1. Определение шаблона
Режим меморандумы отражает внутреннее состояние объекта без разрушения корпуса и спасает это состояние вне объекта. Таким образом, объект может быть восстановлен до его первоначального сохраненного состояния позже.
2. Примеры модели
1 режим анализа
Мы одолжили проведенную игру, чтобы проиллюстрировать этот режим.
2 режима режима статической классной диаграммы
3 примеры кода (режим Black Box Memo)
3.1 Создать заметку узкого интерфейса inarrowmemento
пакет com.demo.memento;/** * Меморандум Узкий интерфейс (метод не предоставляется, внешние объекты не могут получить доступ к внутренней информации объекта меморандума) * * @author * */public inarrowmemento {}3.2 Герой спонсор Меморандума
Пакет com.demo.originator; import java.util.random; import com.demo.memento.inarrowmemento;/** * Challenger * * @author * */public Class Hero {// value value private int int clood; // Force Value Private Int Меч; // Случайное число частного окончательного случайного случайного random = new Random (); // Создать метод инициализировать контент public hero () {this.blood = 100; this.word = 100; } // Создать меморандум, чтобы сохранить контент public inarrowmemento creatememento () {system.out.println ("Создать меморандум ..."); вернуть новое сувенир (this.blood, this.word); } // Восстановить контент меморандума Public void RestoreRommento (inarrowMemento memento) {System.out.println («Восстановить статус в меморандуме ...»); if (memento! = null) {memento memento2 = (Memento) Memento; this.blood = memento2.getblood (); this.sword = memento2.getsword (); }} / ** * Challenge Boss * / public int koboss () {// Когда значение крови составляет <= 0, задача терпит неудачу. Предположим, что вероятность победы над боссом составляет 2% // при оценке, все еще существует значение крови, если (this.blood <= 0 || this.sword <= 0) {System.out.println (this.toString ()); System.out.println («Изменить босс неудачный!»); возврат -1; } else {// Получить случайное число double win = math.random (); if (win <= 0,02) {System.out.println (this.ToString ()); System.out.println («Поздравляю, вызов боссу успешно!»); возврат 1; } else {System.out.println (this.ToString ()); System.out.println («Продолжайте атаковать босса ...»); // Случайное число снижает значение крови и значение силы, чтобы продолжить ko int blood_sub = random.nextint (10); int sword_sub = random.nextint (10); this.blood -= blood_sub; this.word -= swork_sub; возврат 0; }}} @Override public String toString () {return "Текущее значение крови:" + this.blood + " - Текущее значение силы:" + this.sword; } / ** * Меморандум (весь класс является частным и может быть доступен только инициатором) * * @author * * / private class Memento реализует inarrowmemento {// value clort private int int blood; // Force Value Private Final Int Sword; // Содержание инициализации конструктора частное сувенир (int blood, int sword) {this.blood = blood; this.word = меч; } private int getBlood () {return Blood; } private int get -Sword () {return Sword; }}}3.3 Менеджер меморандума - смотритель
пакет com.demo.caretaker; import com.demo.memento.inarrowmemento;/** * Администратор * * @author * *//общественный класс Caretaker {private inarrowmemento memento; / ** * Получить меморандум объект * * @return */ public inarrowmemento getmemento () {return memento; } / ** * Сохранить меморандум объект * * @param memento * / public void setmemento (inarrowmemento memento) {this.memento = memento; }}3.4 Позвольте герою бросить вызов боссу один клиент
пакет com.demo; import com.demo.caretaker.caretaker; import com.demo.originator.hero;/** * Клиент основное приложение * * @author * */public class client {/** * @param args */public void main (String [] args) {// Создать роли Hero = hero = new Hero (); // Создать администратор смотритель CareTaker = New CareTaker (); // Сохранить информацию о статусе перед задачей Caretaker.setMemento (hero.creatememento ()); // Есть только три шанса победить босс int cnt = 1; // вызов босс -результат int ko = -1; while (ko! = 1 && cnt <= 3) {System.out .println ("======================" + cnt + " =================================================================================== =================================================================================== {if (ko == -1) {// Выберите и восстановлена на начальное время. }}4 Результаты работы
Создайте памятку ...
================================================================
Текущее значение крови: 100 - Современное значение силы: 100
Продолжайте атаковать босса ...
Текущее значение крови: 96 - Текущее значение силы: 99
Продолжайте атаковать босса ...
Текущее значение крови: 90 - Текущее значение силы: 98
Продолжайте атаковать босса ...
Текущее значение крови: 81 - Текущее значение силы: 95
Продолжайте атаковать босса ...
Текущее значение крови: 78 - Текущее значение силы: 93
Продолжайте атаковать босса ...
Текущее значение крови: 72 - Текущее значение силы: 88
Продолжайте атаковать босса ...
Текущее значение крови: 64 - Текущее значение силы: 85
Продолжайте атаковать босса ...
Текущее значение крови: 56 - Текущее значение силы: 80
Продолжайте атаковать босса ...
Текущее значение крови: 49 - Текущее значение силы: 73
Продолжайте атаковать босса ...
Текущее значение крови: 45 - Текущее значение силы: 71
Продолжайте атаковать босса ...
Текущее значение крови: 37 - Текущее значение силы: 68
Продолжайте атаковать босса ...
Текущее значение крови: 29 - Текущее значение силы: 65
Продолжайте атаковать босса ...
Текущее значение крови: 20 - Текущее значение силы: 59
Продолжайте атаковать босса ...
Текущее значение крови: 11 - Текущее значение силы: 54
Продолжайте атаковать босса ...
Текущее значение крови: 9 - Текущее значение силы: 52
Продолжайте атаковать босса ...
Текущее значение крови: 3 - Текущее значение силы: 45
Продолжайте атаковать босса ...
Текущее значение крови: -3 - Текущее значение силы: 41
Не удалось бросить вызов боссу!
Восстановить статус в записке ...
======================================
Текущее значение крови: 100 - Современное значение силы: 100
Продолжайте атаковать босса ...
Текущее значение крови: 96 - Текущее значение силы: 95
Продолжайте атаковать босса ...
Текущее значение крови: 96 - Текущее значение силы: 91
Продолжайте атаковать босса ...
Текущее значение крови: 88 - Текущее значение силы: 82
Продолжайте атаковать босса ...
Текущее значение крови: 79 - Текущее значение силы: 79
Продолжайте атаковать босса ...
Текущее значение крови: 76 - Текущее значение силы: 72
Продолжайте атаковать босса ...
Текущее значение крови: 73 - Текущее значение силы: 70
Продолжайте атаковать босса ...
Текущее значение крови: 72 - Текущее значение силы: 66
Продолжайте атаковать босса ...
Текущее значение крови: 72 - Текущее значение силы: 61
Продолжайте атаковать босса ...
Текущее значение крови: 72 - Текущее значение силы: 58
Продолжайте атаковать босса ...
Текущее значение крови: 72 - Современное значение силы: 52
Продолжайте атаковать босса ...
Текущее значение крови: 63 - Современное значение силы: 51
Продолжайте атаковать босса ...
Текущее значение крови: 62 - Современное значение силы: 50
Продолжайте атаковать босса ...
Текущее значение крови: 54 - Текущее значение силы: 41
Продолжайте атаковать босса ...
Текущее значение крови: 50 - Современное значение силы: 39
Продолжайте атаковать босса ...
Текущее значение крови: 47 - Текущее значение силы: 39
Продолжайте атаковать босса ...
Текущее значение крови: 43 - Современное значение силы: 38
Продолжайте атаковать босса ...
Текущее значение крови: 37 - Текущее значение силы: 36
Продолжайте атаковать босса ...
Текущее значение крови: 34 - Текущее значение силы: 35
Продолжайте атаковать босса ...
Текущее значение крови: 32 - Текущее значение силы: 27
Продолжайте атаковать босса ...
Текущее значение крови: 28 - Текущее значение силы: 22
Продолжайте атаковать босса ...
Текущее значение крови: 26 - Текущее значение силы: 15
Продолжайте атаковать босса ...
Текущее значение крови: 24 - Современное значение силы: 11
Продолжайте атаковать босса ...
Текущее значение крови: 19 - Текущее значение силы: 3
Продолжайте атаковать босса ...
Текущее значение крови: 10 - Современное значение силы: -3
Не удалось бросить вызов боссу!
Восстановить статус в записке ...
=================== Третий вызов ================================
Текущее значение крови: 100 - Современное значение силы: 100
Продолжайте атаковать босса ...
Текущее значение крови: 99 - Текущее значение силы: 93
Продолжайте атаковать босса ...
Текущее значение крови: 98 - Текущее значение силы: 84
Продолжайте атаковать босса ...
Текущее значение крови: 98 - Текущее значение силы: 82
Продолжайте атаковать босса ...
Текущее значение крови: 95 - Текущее значение силы: 76
Продолжайте атаковать босса ...
Текущее значение крови: 88 - Текущее значение силы: 68
Продолжайте атаковать босса ...
Текущее значение крови: 81 - Текущее значение силы: 64
Продолжайте атаковать босса ...
Текущее значение крови: 76 - Текущее значение силы: 64
Продолжайте атаковать босса ...
Текущее значение крови: 67 - Текущее значение силы: 64
Поздравляю, вы успешно бросили вызов боссу!
Iii. Принципы дизайна этого образца
1. Поддержание границы упаковки
2 Реализация двойного интерфейса для обеспечения безопасности.
4. Используйте случаи
1 Когда необходимо восстановить предыдущее состояние объекта в определенный момент.
2. В режиме Memo White Box вам необходимо сохранить состояние объекта в определенный момент извне, но если вы используете интерфейс, чтобы позволить другим объектам непосредственно получать эти состояния, он выявит детали реализации объекта и разрушит инкапсуляцию объекта.
3 Режим режима Black Box Memo обеспечивает механизм доступа к двойному интерфейсу, обеспечивающий широкий интерфейс для объекта инициатора и узкий интерфейс для объектов, отличных от инициатора, что эффективно решает инкапсуляцию и безопасность.
V. Статическая классная диаграмма
1 Статическая классовая диаграмма режима белой коробки
2 Статическая классовая диаграмма режима черного ящика
Для получения дополнительного контента, связанного с Java, читатели, заинтересованные в этом сайте, могут просмотреть темы: «Учебное пособие по структуре данных Java и алгоритм», «Сводка операции Java Operation Dom Узел», «Краткое изложение Java File и Directory Commine» и «Советы по эксплуатации Java Cache»
Я надеюсь, что эта статья будет полезна для всех Java Programming.