🗊Презентация Приспособленец. Оптимизация работы с памятью путём предотвращения создания экземпляров элементов, имеющих общую сущность

Нажмите для полного просмотра!
Приспособленец. Оптимизация работы с памятью путём предотвращения создания экземпляров элементов, имеющих общую сущность, слайд №1Приспособленец. Оптимизация работы с памятью путём предотвращения создания экземпляров элементов, имеющих общую сущность, слайд №2Приспособленец. Оптимизация работы с памятью путём предотвращения создания экземпляров элементов, имеющих общую сущность, слайд №3Приспособленец. Оптимизация работы с памятью путём предотвращения создания экземпляров элементов, имеющих общую сущность, слайд №4Приспособленец. Оптимизация работы с памятью путём предотвращения создания экземпляров элементов, имеющих общую сущность, слайд №5Приспособленец. Оптимизация работы с памятью путём предотвращения создания экземпляров элементов, имеющих общую сущность, слайд №6Приспособленец. Оптимизация работы с памятью путём предотвращения создания экземпляров элементов, имеющих общую сущность, слайд №7Приспособленец. Оптимизация работы с памятью путём предотвращения создания экземпляров элементов, имеющих общую сущность, слайд №8Приспособленец. Оптимизация работы с памятью путём предотвращения создания экземпляров элементов, имеющих общую сущность, слайд №9Приспособленец. Оптимизация работы с памятью путём предотвращения создания экземпляров элементов, имеющих общую сущность, слайд №10Приспособленец. Оптимизация работы с памятью путём предотвращения создания экземпляров элементов, имеющих общую сущность, слайд №11Приспособленец. Оптимизация работы с памятью путём предотвращения создания экземпляров элементов, имеющих общую сущность, слайд №12Приспособленец. Оптимизация работы с памятью путём предотвращения создания экземпляров элементов, имеющих общую сущность, слайд №13

Вы можете ознакомиться и скачать презентацию на тему Приспособленец. Оптимизация работы с памятью путём предотвращения создания экземпляров элементов, имеющих общую сущность. Доклад-сообщение содержит 13 слайдов. Презентации для любого класса можно скачать бесплатно. Если материал и наш сайт презентаций Mypresentation Вам понравились – поделитесь им с друзьями с помощью социальных кнопок и добавьте в закладки в своем браузере.

Слайды и текст этой презентации


Слайд 1





Приспособленец 
(англ. Flyweight, "легковесный (элемент)") 
Описание слайда:
Приспособленец  (англ. Flyweight, "легковесный (элемент)") 

Слайд 2





Цель
Оптимизация работы с памятью путём предотвращения создания экземпляров элементов, имеющих общую сущность.
Описание слайда:
Цель Оптимизация работы с памятью путём предотвращения создания экземпляров элементов, имеющих общую сущность.

Слайд 3





Описание
Flyweight используется для уменьшения затрат при работе с большим количеством мелких объектов. При проектировании приспособленца необходимо разделить его свойства на внешние и внутренние. Внутренние свойства всегда неизменны, тогда как внешние могут отличаться в зависимости от места и контекста применения и должны быть вынесены за пределы приспособленца.
Описание слайда:
Описание Flyweight используется для уменьшения затрат при работе с большим количеством мелких объектов. При проектировании приспособленца необходимо разделить его свойства на внешние и внутренние. Внутренние свойства всегда неизменны, тогда как внешние могут отличаться в зависимости от места и контекста применения и должны быть вынесены за пределы приспособленца.

Слайд 4


Приспособленец. Оптимизация работы с памятью путём предотвращения создания экземпляров элементов, имеющих общую сущность, слайд №4
Описание слайда:

Слайд 5





/*
 * Интерфейс приспособленца
 */
 public interface Primitive {
   /*
    * Метод отрисовки примитива с передачей заданного контекста рисования
    */
   public void draw(Context context);
 }
/*
 * Интерфейс приспособленца
 */
 public interface Primitive {
   /*
    * Метод отрисовки примитива с передачей заданного контекста рисования
    */
   public void draw(Context context);
 }
Описание слайда:
/* * Интерфейс приспособленца */ public interface Primitive {   /*    * Метод отрисовки примитива с передачей заданного контекста рисования    */   public void draw(Context context); } /* * Интерфейс приспособленца */ public interface Primitive {   /*    * Метод отрисовки примитива с передачей заданного контекста рисования    */   public void draw(Context context); }

Слайд 6





/*
 * Окружнсоть - разделяемый приспособленец. Внутреннее состояние - радиус
 */
 public class Circle implements Primitive {
   private int radius;
   
   public Circle(int radius) {
     this.radius = radius;
   }
 
  @Override
   public void draw(Context context) { }
 }
/*
 * Окружнсоть - разделяемый приспособленец. Внутреннее состояние - радиус
 */
 public class Circle implements Primitive {
   private int radius;
   
   public Circle(int radius) {
     this.radius = radius;
   }
 
  @Override
   public void draw(Context context) { }
 }
Описание слайда:
/* * Окружнсоть - разделяемый приспособленец. Внутреннее состояние - радиус */ public class Circle implements Primitive {   private int radius;      public Circle(int radius) {     this.radius = radius;   }   @Override   public void draw(Context context) { } } /* * Окружнсоть - разделяемый приспособленец. Внутреннее состояние - радиус */ public class Circle implements Primitive {   private int radius;      public Circle(int radius) {     this.radius = radius;   }   @Override   public void draw(Context context) { } }

Слайд 7





/*
 * Разделяемый приспособленец - Квадрат.
 * Внутренее состояние - высота, ширина.
 */
 public class Square implements Primitive {
   private int height, width;
   
   public Square(int height, int width) {
     this.height = height;
     this.width = width;
   }
 
  @Override
   public void draw(Context context) { }
 }
/*
 * Разделяемый приспособленец - Квадрат.
 * Внутренее состояние - высота, ширина.
 */
 public class Square implements Primitive {
   private int height, width;
   
   public Square(int height, int width) {
     this.height = height;
     this.width = width;
   }
 
  @Override
   public void draw(Context context) { }
 }
Описание слайда:
/* * Разделяемый приспособленец - Квадрат. * Внутренее состояние - высота, ширина. */ public class Square implements Primitive {   private int height, width;      public Square(int height, int width) {     this.height = height;     this.width = width;   }   @Override   public void draw(Context context) { } } /* * Разделяемый приспособленец - Квадрат. * Внутренее состояние - высота, ширина. */ public class Square implements Primitive {   private int height, width;      public Square(int height, int width) {     this.height = height;     this.width = width;   }   @Override   public void draw(Context context) { } }

Слайд 8





/*
 * Разделяемый приспособленец - точка
 */
 public class Point implements Primitive {
   @Override
   public void draw(Context context) { }
 }
/*
 * Разделяемый приспособленец - точка
 */
 public class Point implements Primitive {
   @Override
   public void draw(Context context) { }
 }
Описание слайда:
/* * Разделяемый приспособленец - точка */ public class Point implements Primitive {   @Override   public void draw(Context context) { } } /* * Разделяемый приспособленец - точка */ public class Point implements Primitive {   @Override   public void draw(Context context) { } }

Слайд 9





/*
 * Контекст рисования, передается клиентом примитиву для отрисовки последнего
 */
 public final class Context {
   public final int x;
   public final int y;
   public final Color color;
   
   public Context(int x, int y, Color collor) {
     this.x = x;
     this.y = y;
     this.color = collor;
   }
 }
/*
 * Контекст рисования, передается клиентом примитиву для отрисовки последнего
 */
 public final class Context {
   public final int x;
   public final int y;
   public final Color color;
   
   public Context(int x, int y, Color collor) {
     this.x = x;
     this.y = y;
     this.color = collor;
   }
 }
Описание слайда:
/* * Контекст рисования, передается клиентом примитиву для отрисовки последнего */ public final class Context {   public final int x;   public final int y;   public final Color color;      public Context(int x, int y, Color collor) {     this.x = x;     this.y = y;     this.color = collor;   } } /* * Контекст рисования, передается клиентом примитиву для отрисовки последнего */ public final class Context {   public final int x;   public final int y;   public final Color color;      public Context(int x, int y, Color collor) {     this.x = x;     this.y = y;     this.color = collor;   } }

Слайд 10





/*
 * Фабрика приспособленцев.
 * Реализует разделение оных на основании их внутренних состояний.
 * 
*/
 public abstract class PrimitiveFactory {
   
   private static Point onePoint;
   private static Map<Integer, Circle> circles;
   private static Map<Integer, Square> squares;
   
   static {
     circles = new HashMap<Integer, Circle>();            
     squares = new HashMap<Integer, Square>();
   }
/*
 * Фабрика приспособленцев.
 * Реализует разделение оных на основании их внутренних состояний.
 * 
*/
 public abstract class PrimitiveFactory {
   
   private static Point onePoint;
   private static Map<Integer, Circle> circles;
   private static Map<Integer, Square> squares;
   
   static {
     circles = new HashMap<Integer, Circle>();            
     squares = new HashMap<Integer, Square>();
   }
Описание слайда:
/* * Фабрика приспособленцев. * Реализует разделение оных на основании их внутренних состояний. * */ public abstract class PrimitiveFactory {      private static Point onePoint;   private static Map<Integer, Circle> circles;   private static Map<Integer, Square> squares;      static {     circles = new HashMap<Integer, Circle>();                 squares = new HashMap<Integer, Square>();   } /* * Фабрика приспособленцев. * Реализует разделение оных на основании их внутренних состояний. * */ public abstract class PrimitiveFactory {      private static Point onePoint;   private static Map<Integer, Circle> circles;   private static Map<Integer, Square> squares;      static {     circles = new HashMap<Integer, Circle>();                 squares = new HashMap<Integer, Square>();   }

Слайд 11





  public static synchronized Circle createCircle(int radius) {
     if (circles.get(radius) == null) {
       circles.put(radius, new Circle(radius));
     }
     
     return circles.get(radius);
   }
   
   public static synchronized Square createSquare(int height, int width) {
     if (squares.get(height*10+width) == null) {
       squares.put(height*10+width, new Square(height, width));
     }
     
     return squares.get(height*10+width);
   }
  public static synchronized Circle createCircle(int radius) {
     if (circles.get(radius) == null) {
       circles.put(radius, new Circle(radius));
     }
     
     return circles.get(radius);
   }
   
   public static synchronized Square createSquare(int height, int width) {
     if (squares.get(height*10+width) == null) {
       squares.put(height*10+width, new Square(height, width));
     }
     
     return squares.get(height*10+width);
   }
Описание слайда:
  public static synchronized Circle createCircle(int radius) {     if (circles.get(radius) == null) {       circles.put(radius, new Circle(radius));     }          return circles.get(radius);   }      public static synchronized Square createSquare(int height, int width) {     if (squares.get(height*10+width) == null) {       squares.put(height*10+width, new Square(height, width));     }          return squares.get(height*10+width);   }   public static synchronized Circle createCircle(int radius) {     if (circles.get(radius) == null) {       circles.put(radius, new Circle(radius));     }          return circles.get(radius);   }      public static synchronized Square createSquare(int height, int width) {     if (squares.get(height*10+width) == null) {       squares.put(height*10+width, new Square(height, width));     }          return squares.get(height*10+width);   }

Слайд 12





  public static synchronized Point createPoint() {
     if (onePoint == null) {
       onePoint = new Point();
     }
     
     return onePoint;
   }
 }
  public static synchronized Point createPoint() {
     if (onePoint == null) {
       onePoint = new Point();
     }
     
     return onePoint;
   }
 }
Описание слайда:
  public static synchronized Point createPoint() {     if (onePoint == null) {       onePoint = new Point();     }          return onePoint;   } }   public static synchronized Point createPoint() {     if (onePoint == null) {       onePoint = new Point();     }          return onePoint;   } }

Слайд 13





Summary
(+) Можно получить ощутимую экономию по памяти.
(-) Однако, возможно, за это придется заплатить временем на поиск/передачу/вычисление внешнего состояния.
(?) Важно понимать, что применимость данного паттерна определяется, в первую очередь тем, на сколько четко идентифицируются внутреннее и внешнее состояния объектов системы.
Описание слайда:
Summary (+) Можно получить ощутимую экономию по памяти. (-) Однако, возможно, за это придется заплатить временем на поиск/передачу/вычисление внешнего состояния. (?) Важно понимать, что применимость данного паттерна определяется, в первую очередь тем, на сколько четко идентифицируются внутреннее и внешнее состояния объектов системы.



Похожие презентации
Mypresentation.ru
Загрузить презентацию