zoukankan      html  css  js  c++  java
  • 十. 享元设计模式

    一. 定义

    1. 享元模式是池技术的一种实现方式,使用共享对象来支持细粒度的对象
    2. 享元模式把对象信息分为了两个部分
      (1)内部状态 : 可以作为对象的动态附加信息,不必存储在具体的对象中的属性(id,postAddress)
      (2)外部状态 : 对象得以依赖的一个标记,随环境改变而改变 (eg:科目+考试地点的复合字符串)
    3. 享元模式角色
      (1)Flyweight:抽象享元角色 (eg:SignInfo)
      (2)ConcreteFlyweight:具体享元操作(eg:SignInfo4Pool),该类中不应该存在一个方法能同时修改外部状态和内部状态,因为内部状态不能随环境改变而改变
      (3)unsharedConcreteFlyweight:不可共享的享元角色-不存在外部状态或线程安全要求,不能使用共享对象细化的对象
      (4)FlyweightFactory:享元工厂-构造对象池,提供从池中获取对象的方法
    4. [注]:
      (1)享元模式对象池中的角色应尽量多 , 多到满足业务为止
      (2)尽量使用Java基本类型作为外部状态,如果把对象作为外部状态放到对象池中(HashMap),则需要重写hashcode()和equals(),造成性能不足

    二.场景

  • 相关阅读:
    LeetCode 264. Ugly Number II
    LeetCode 231. Power of Two
    LeetCode 263. Ugly Number
    LeetCode 136. Single Number
    LeetCode 69. Sqrt(x)
    LeetCode 66. Plus One
    LeetCode 70. Climbing Stairs
    LeetCode 628. Maximum Product of Three Numbers
    Leetcode 13. Roman to Integer
    大二暑假周进度报告03
  • 原文地址:https://www.cnblogs.com/72808ljup/p/5129510.html
Copyright © 2011-2022 走看看