设计模式第九篇-结构型模式【享元模式】

设计模式案例分析-github

一、什么是享元模式?

     定义:   主要用于减少创建对象的数量,以减少内存占用和提高性能。这种类型的设计模式属于结构型模式,它提供了减少对象数量从而改善应用所需的对象结构的方式。

   通俗理解: 就是使用已经存在的对象,而非再去创建对象,项目中其实我们经常用,只是不知道其实是享元模式,比如使用HashMap缓存键值对,当去创建对象是,去map中查找是否存在键,如果存在,直接返回对象,否则创建新的对象,并且放到map中。当然这只是享元模式的一个简单案例。

二、角色?

     1、抽象享元对象(可无)

     2、具体享元对象—>需要共享的对象 

     3、享元对象的工厂—>创建对象,缓存对象

三、使用场景?

    1、系统有大量相似对象。 2、需要缓冲池的场景。

三、案例? 比如随机创建获取一个圆形。

  角色一: 抽象享元对象: IShape

  角色二: 具体享元对象: Circle

  角色三: 享元工厂

public interface IShape {

void draw();

}

public class Circle implements IShape {

private int radius;

    public Circle(int radius) {

this.radius = radius;

    }

@Override

    public void draw() {

Log.i("zqr", "绘制了一个半径为:" +radius);

    }

}

public class CircleFactory {

private static HashMaphashMap =new HashMap<>();

    public static IShapegetCircle(int radius) {

// 没必要每次都创建,可以判断存在半径为radius的圆,就使用已有的

        Circle circle;

        synchronized (hashMap) {

circle =hashMap.get(radius);

            if (circle ==null) {

circle =new Circle(radius);

                hashMap.put(radius, circle);

            }

}

return circle;

    }

}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1 场景问题# 1.1 加入权限控制## 考虑这样一个问题,给系统加入权限控制,这基本上是所有的应用系统都有的功能...
    七寸知架构阅读 7,212评论 1 57
  • 本文首发于个人博客:Lam's Blog - 谈谈23种设计模式在Android源码及项目中的应用,文章由Mark...
    格子林ll阅读 10,114评论 1 105
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,929评论 18 399
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,369评论 19 139
  • 风很轻,梦很美。 淡淡的人生,无常的心境。 着了新衣,失了旧人。 看不到的地方,我的心,你的情。 愁怨太深,多了矫...
    默浅阅读 1,196评论 1 3