Режим пролета: благодаря технологии обмена, он может эффективно поддерживать большое количество мелкозернистых объектов.
Режим наслаждения юаней разделен на простой режим наслаждения юаней и композит наслаждается режимом Юаня в «Яве и режиме» Ян Хонг. Композит наслаждается юаней в композитном режиме не может быть разделен. Ключом к обмену объектом наслаждения юаней является различие между внутренними и внешними состояниями. Эти два «контактирования» слишком сложны для понимания. Я не говорю, что перевод не очень хороший, но, возможно, моя взаимопонимающая способность плохая, или версия перевода «элементов дизайна образец многократного объектно-ориентированного программного обеспечения» переводится во внутренние и внешние объекты. Это относительно просто и чувствует себя неловко для литературного запаха концептуальных вещей, которые слишком сильны. Персонажи здесь также используют утверждение «Основы дизайнерского шаблона повторно используемого объектно-ориентированного программного обеспечения», которое не различает простые режимы и композитные режимы, но имеет UnsharedConcreteFly-вес (в «Java и Mode», это указывает на то, что композитное удовольствие не может быть обмен). Мы здесь говорим, что это не может делиться ролями удовольствия. Таким образом, персонажи в режиме удовольствия включают в себя:
Институциональная диаграмма класса модели Сяньгюанс заключается в следующем:
При использовании рисунка энциклопедии в дизайне java.lang.String мы знаем, что строки в Java всегда используются, например, следующий фрагмент кода:
String m = "a"; string n = "a"; system.out.println (m == n);
Это выведет True, указывая на то, что M и N указывают на один и тот же экземпляр, и в памяти есть только один «A». Так используется режим наслаждения юаней на строке.
Использование режима Xiangyuan в процессе редактирования текста и хранения. Здесь предполагается, что статья состоит из линейных объектов, а объекты линии состоят из нескольких объектов символов. Однако, если каждый символ сохраняет свой собственный объект, то в сообщении есть тысячи объектов символов, которые серьезно потребляют системную память и вызывает неприемлемые накладные расходы во время выполнения. Хороший метод состоит в том, чтобы использовать режим Xiangyuan, чтобы сохранить только значения кодирования символов ASCII, в качестве внутреннего неизменного состояния, обмена объектами символов, а форматированные данные, такие как относительный цвет символов и размер, поддерживаются клиентом, и могут передаваться снаружи во время выполнения. Каждый строк представляет собой неосновный универсальный объект, который состоит из универсального объекта (объект символов).
Давайте посмотрим на пример простой структуры рисунка энциклопедии:
/ *** Письмо*/ Письмо открытого класса {частное имя строки; Public Letter (String name) {this.name = name; } public String getName () {return name; }} / ** * Сянгьянская фабрика (Singleton Factory), которая генерирует буквенные объекты */ public class itledfactory {private map <string, буква> карта; Частный статический экземпляр письма = new letterfactory (); private letterfactory () {map = new Hashmap <String, letter> (); } public static letterfactory getInstance () {return ancess; } public void Add (буква буквы) {if (itled! = null &&! map.containskey (itled.getName ())) {map.put (itled.getName (), letter); } System.out.println ("map.size ====" + map.size ()); } public witter get (string name) {return map.get (name); }} открытый тест класса {public static void main (string [] args) {itledfactory factory = itledfactory.getInstance (); String Word = "EASTISY"; AddTletterByName (Factory, Word); Getletter (Factory, Word); } // Добавить объект буквы static void addTletterByName (itledfactory factory, string word) {for (char c: word.tochararray ()) {factory.add (новая буква (c + "")); }} // Выходная буква объект static void getletter (itledfactory factory, string word) {for (char c: word.tochararray ()) {system.out.println (factory.get (c + "")); }}}Печать:
map.size ==== 1 map.size ==== 2 map.size ==== 2 map.size ===== 3 map.size ==== 4 Map.Size === 5 Map.Size ==== 5 5 Flyweight.ledletter@3343c8b3 Flyweense.letter@272d7a10. Flayweight.ledtter@1aa8c488 Flayweight.ledtter@3dfeca64 Flayweight.ledtter@22998b08 Flayweight.ledletter@1aa8c488