В этой статье описывается режим удовольствия от шаблона дизайна Java. Поделитесь этим для вашей ссылки, следующим образом:
Объясните концепцию: то есть, если в системе есть несколько идентичных объектов, то просто поделитесь одной копией, и нет необходимости создавать экземпляр объекта для каждого. Например, в текстовой системе каждая буква определяется как объект, поэтому существует 52 буквы верхнего и нижнего регистра, поэтому необходимо определить 52 объекта. Если есть 1 -метровый текст, то есть так много букв. Если бы каждая буква определяет объект, память давно взорвалась бы. Затем, если каждая буква разделяет объект, то она будет значительно сохранить ресурсы.
В режиме лечения, поскольку должны быть сгенерированы различные объекты, заводский режим часто появляется в режиме легового веса. Внутреннее состояние вылета используется для обмена. Фабрика в полусреднем весе отвечает за поддержание бассейна хранения объектов (бассейн в полусреднем весе) для хранения объектов с внутренним состоянием. Режим легового веса - это режим, который повышает эффективность и производительность программы, который значительно ускорит скорость работы программы. Есть много случаев применения, следующим образом:
Сначала определите абстрактный класс в полусреднем весе:
Пакет Flayweense; Public Abstract Class Flayweight {public Abstract void Operation ();}Внедрить конкретный класс:
Пакет Flayweight; Public Class ConcreteFlyweight Extends Flayweight {Private String String; Public ConcreteFlyWeight (String Str) {String = str;} public void anpormation () {System.out.println ("Concrete --- Легкий вес:" + string);}}Внедрить класс фабрики метода:
Пакет вылетает; импорт java.util.hashtable; открытый класс Flayween -Factory {Private Hashtable Flayweights = новый Hashtable();//------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- нулевой){//-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------.Этот фабричный метод класс очень критичен, вот подробное объяснение:
Хэштата определяется в 1 для хранения каждого объекта; Объект, который нужно создать, выбирается в 2, а объект, который будет возвращен в 6. Если в хэш -образе нет объекта, который не может быть выбран в хэш -образне.
Наконец, давайте посмотрим на звонок в полусреднем весе:
Пакет вылетает; import java.util.hashtable; открытый класс Flayweenpathtern {Flayweewsefactory Factory = New Flayween -Factory (); Flyweight Fly1; Flyweight Fly2; Flyweight Fly3; Flyweight Fly4; Flyweight Fly5; Flyweight Fly6;/***// ** Создает новый экземпляр вылета. factory.getflyweight ("Google"); Fly2 = factory.getFlyweight ("quTr"); fly3 = factory.getFlyweight ("Google"); Fly4 = factory.getFlyweight ("Google"); Fly5 = Factory.GetFly -вес ("Google"); fly6 = factory.GetFlyWeeSe ("Google"); showflyweail () {fly1.operation (); fly2.operation (); fly3.operation (); fly4.operation (); fly5.operation (); fly6.operation (); int objsize = factory.getFlySeepleSize (); System.out.println ("objSize =" + objSize); args) {System.out.println ("Схема в полусреднем весе!"); FlyweightPattern fp = new Flayweenpattern (); fp.showflyweight ();}}Вот результаты работы:
Бетон --- втянутый вес: Google
Бетон --- попадание в весе: QUTR
Бетон --- втянутый вес: Google
Бетон --- втянутый вес: Google
Бетон --- втянутый вес: Google
Бетон --- втянутый вес: Google
objsize = 2
Мы определили 6 объектов, 5 из которых одинаковы. В соответствии с определением режима легового веса «Google» должен делиться объектом. В фактическом количестве объектов мы видим, что есть только 2 объекта.
Суммировать:
Режим влетяния настолько важен, потому что он может помочь вам сэкономить много пространства памяти в сложной системе. На языке Java тип строки использует режим энциклопедии. Строковой объект имеет конечный тип и не может быть изменен после его создания. В Java константы струны присутствуют в постоянном бассейне. Java гарантирует, что строковая константа имеет только одну копию в постоянном пуле. String a = "ABC", где "ABC" - это строка постоянная.
Те, кто знаком с Java, должны знать следующий пример:
String a = "hello"; string b = "hello"; if (a == b) system.out.println ("ok"); elsesystem.out.println ("error");Результат вывода: ОК. Видно, что если условие сравнивает адреса двух a и b, или можно сказать, что это пространство памяти
Основное резюме: Объекты, которые могут быть переданы, то есть объекты того же типа, возвращаемых, на самом деле являются одним и тем же экземпляром. Когда клиенту требуется сгенерированный объект, завод определит, существует ли экземпляр этого объекта. Если он существует, то прямо верните этот экземпляр объекта. Если его не существует, создайте и сохраните его. Это имеет некоторый смысл синглтонского рисунка. Обычно класс заводов будет иметь переменную элемента SET Type для сохранения объектов, такую как хэштаб, вектор и т. Д. В Java, пулах подключений к базе данных, пулам потоков и т. Д. - это приложения, которые используют режим Enyuan.
Для получения дополнительного контента, связанного с Java, читатели, заинтересованные в этом сайте, могут просмотреть темы: «Учебное пособие по структуре данных Java и алгоритм», «Сводка операции Java Operation Dom Узел», «Краткое изложение Java File и Directory Commine» и «Советы по эксплуатации Java Cache»
Я надеюсь, что эта статья будет полезна для всех Java Programming.