Design Patterns отмечает десять наилегчайшем

Показать требования веб-проекта

Мелкая аутсорсинг проектов, клиент А сделать сайт продукта витрины, друг клиентов Чувство хорошо, я надеюсь сделать это сайт продуктов, но требования немного отличаются:

  1. Там требования заказчика выпускаются в виде новостей
  2. Есть клиенты, которые требуют издателей в виде блога
  3. Клиент вы хотите опубликовать в виде микро-номер канала общественного

Традиционные решения, чтобы показать сайт проекта

  1. Прямое копирование и вставки, а также в соответствии с требованиями заказчика, пользовательские модификации
  2. Аренда места для каждого сайта
  3. Схематическое программа проектирования
    Here Вставка рисунка Описание

Традиционные решения на сайт, чтобы показать проект - Анализ

  1. Сайт нуждается в структурном сходство высоко, но сайт не высокий трафик, если разделить на множество виртуального пространства для обработки эквивалента много того же экземпляр сайта объекта, в результате чего траты ресурсов сервера
  2. Решения: интегрированы в веб-сайт, чтобы поделиться своим связанный с ним код и данные на жесткий диск, память, процессор, пространства базы данных, серверные ресурсы могут совместно достичь, уменьшить ресурсы сервера
  3. Для кода, потому что это пример, то легче поддерживать и расширять
  4. Приведенные выше идеи решения могут быть использованы для решения мухи

Наименьший вес основное введение

Основные введение

  1. Наималейший вес (приспособленец), также известный как режим муху объема: Использование обмен для поддержки большого количества мелкозернистых объектов
  2. Обычно используется в системе разработки низкого уровня для решения проблемы производительности системы. Как и подключение к базе данных пул, который должен создать объект хорошего соединения, нам нужно иметь непосредственно используются, чтобы избежать повторного создания этих объектов подключения, если не нужно, то создать
  3. Наименьший вес объекта повторяющиеся памяти для решения проблемы отходов, когда система имеет большое количество подобных объектов, пул буферов, когда это необходимо. Вам нужно не всегда создавать новый объект, вы можете получить из пула буферов. Это может уменьшить системную память, при одновременном повышении эффективности
  4. Приспособленец классический сценарий технология бассейн, String постоянный пул, соединения с базой данных бассейн, бассейн и т.д. приложения Наименьший вес, приспособленец является важным средством для достижения клеточной технологии
    Here Вставка рисунка Описание

Принцип Класс фиг мухи

Here Вставка рисунка Описание
 описание диаграммы классов ,
чтобы проиллюстрировать принципы рисования - что (роли и обязанности режима)

  1. Наименьший вес балансира абстрактный характер, его продукт является абстрактным классом, определяет как внутреннее состояние объекта и внешнее состояние (описано ниже) интерфейса или
  2. ConcreteFlyWeight наилегчайшем является особой ролью, является категорией конкретного продукта, для достижения роли абстрактных определений, связанная бизнес
  3. UnSharedConcreteFlyWeight не разделяют роль, как правило, не появляется на заводе наилегчайшем.
  4. FlyWeightFactory Наименьший вес завода класс для построения ячейки контейнера (сбор), обеспечивая при этом способ получения объекта из пула

Внутреннее состояние и внешнее состояние

Перейти пример, нарды, шашки, они имеют большое количество частей предметов, и идти нарды только черно-белыми, цветные и более шашки маленьких кусочков, так что внутреннее состояние цветных кусочков, разница между различными положениями частей, то есть, когда мы Lazi, Lazi цвет дается, но расположение меняется, так это внешняя координата пешки части государства

  1. Наименьший вес шаблон из двух запросов: мелкозернистый и общие объекты. Здесь она включает в себя внутреннее состояние и внешнее состояние, то есть информацию об объекте на две части: внутреннее состояние и внешнее состояние

  2. Это относится к внутреннему состоянию из информации общего объекта, а не хранит изменяется в зависимости от среды внутри объекта мухи

  3. Внешнее состояние относится к объекту маркер зависимых изменений изменяется с окружающей средой, а не общего состояния.

  4. Например: Go теоретически есть 361 вакансий можно положить кусочки, вероятно, есть игра каждые два или три сто частей производства предметов, из-за ограниченного объема памяти, один сервер для поддержки более сложных игроков, чтобы играть в игру Go, если чтобы справиться с выкройкой мухи, так что части могут быть сведены к объекту только два экземпляра, так что хорошее решение проблемы объектов накладных расходов

Наименьший вес решительность сайт шоу проекта

  1. Примеры применения требует
    использования приспособленец завершена, сайт ранее предложил аутсорсинг

  2. Идеи и схема анализа (фиги класс)
    Here Вставка рисунка Описание

  3. реализация кода

// 网站工厂类,根据需要返回压一个网站
public class WebSiteFactory {

	
	//集合, 充当池的作用
	private HashMap<String, ConcreteWebSite> pool = new HashMap<>();
	
	//根据网站的类型,返回一个网站, 如果没有就创建一个网站,并放入到池中,并返回
	public WebSite getWebSiteCategory(String type) {
		if(!pool.containsKey(type)) {
			//就创建一个网站,并放入到池中
			pool.put(type, new ConcreteWebSite(type));
		}
		
		return (WebSite)pool.get(type);
	}
	
	//获取网站分类的总数 (池中有多少个网站类型)
	public int getWebSiteCount() {
		return pool.size();
	}
}

Наилегчайшем анализ исходного кода приложения JDK-Interger

  1. Целое число в Наименьший вес
  2. + + Исходный анализ кода описал Debug

Here Вставка рисунка Описание

package com.atguigu.jdk;

public class FlyWeight {

	public static void main(String[] args) {
// TODO Auto-generated method stub
//如果  Integer.valueOf(x) x 在	-128 --- 127 直接,就是使用享元模式返回,如果不在
//范围类,则仍然 new

//小结:
//1. 在 valueOf 方法中,先判断值是否在 IntegerCache 中,如果不在,就创建新的 Integer(new),  否则,就直接从 缓存池返回
//2. valueOf 方法,就使用到享元模式
//3. 如果使用 valueOf 方法得到一个 Integer 实例,范围在 -128 - 127  ,执行速度比 new 快

		Integer x = Integer.valueOf(127); // 得到 x 实例,类型 Integer Integer y = new Integer(127); // 得 到 y 实 例 , 类 型 Integer
											// Integer z = Integer.valueOf(127);//..
		Integer w = new Integer(127);

		System.out.println(x.equals(y)); // 大小,true System.out.println(x == y ); // false System.out.println(x == z );
											// // true System.out.println(w == x ); // false System.out.println(w == y
											// ); // false

		Integer x1 = Integer.valueOf(200);
		Integer x2 = Integer.valueOf(200);

		System.out.println("x1==x2" + (x1 == x2)); // false
	}
}


Наслаждайтесь соображения и детали режим юаней

Наслаждайтесь соображения и детали режим юаней

  1. Такое понимание наилегчайшие, «наслаждаться», говорит обмен, «мета» означает объект
  2. Система имеет большое количество объектов, которые потребляют много памяти, и состояние объекта может экстернализовать большую часть времени,
    мы можем рассмотреть вопрос об использовании мухи
  3. С уникальный идентификационный код определяется, если в памяти, объекты , идентифицированные уникальный идентификационный код возвращается, с
    HashMap / HashTable хранения
  4. Приспособленец для создания объектов значительно снижается, уменьшая использование памяти программ и повышения эффективности
  5. Приспособленец увеличивает сложность системы. Необходимо отделить внутреннее состояние и внешнее состояние и внешнее состояние , имеющее
    свойство твердения, не должны изменять внутреннее состояние изменяется, которые мы используем , чтобы отметить наилегчайшем
    место.
  6. При использовании мух внимания разделить внутреннее состояние и внешнее состояние, а также необходимость контроля класса фабрики.
  7. Приспособленец классический сценарий требуется пул буферов сцены, такие как Струнный постоянный пул, базы данных пул соединений
Опубликовано 93 оригинальные статьи · вона похвала 31 · просмотров 30000 +

рекомендация

отblog.csdn.net/weixin_43866567/article/details/104803696