资讯专栏INFORMATION COLUMN

享元模式(Flyweight)

senntyou / 2074人阅读

摘要:享元模式一享元模式定义运用共享技术有效的支持大量细粒度的对象二具体实现创建对象接口创建具体对象创建工厂调用输出三优缺点优点减少对象的创建,节省内存缺点提升了系统的复杂性四源码

享元模式

一. 享元模式 1.1 定义

运用共享技术有效的支持大量细粒度的对象.

二. 具体实现 2.1 创建对象接口
    public interface IFlyweight {
        void print();
    }
2.2 创建具体对象
    public class Flyweight implements IFlyweight {
        private String id;
        public Flyweight(String id){
            this.id = id;
        }
        @Override
        public void print() {
            System.out.println("Flyweight.id = " + getId() + " ...");
        }
        public String getId() {
            return id;
        }
    }
2.3 创建工厂
    public class FlyweightFactory {
        private Map flyweightMap = new HashMap();
        public IFlyweight getFlyweight(String str){
            IFlyweight flyweight = flyweightMap.get(str);
            if(flyweight == null){
                flyweight = new Flyweight(str);
                flyweightMap.put(str, flyweight);
            }
            return  flyweight;
        }
        public int getFlyweightMapSize(){
            return flyweightMap.size();
        }
    }
2.4 调用
    public static void main(String[] args) {
        FlyweightFactory flyweightFactory = new FlyweightFactory();
        IFlyweight flyweight1 = flyweightFactory.getFlyweight("A");
        IFlyweight flyweight2 = flyweightFactory.getFlyweight("B");
        IFlyweight flyweight3 = flyweightFactory.getFlyweight("A");
        flyweight1.print();
        flyweight2.print();
        flyweight3.print();
        System.out.println(flyweightFactory.getFlyweightMapSize());
    }
2.5 输出
    Flyweight.id = A ...
    Flyweight.id = B ...
    Flyweight.id = A ...
    2
三. 优缺点 3.1 优点

减少对象的创建,节省内存.

3.2 缺点

提升了系统的复杂性.

四. 源码
    https://github.com/Seasons20/DisignPattern.git

END

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/69534.html

相关文章

  • 一起学设计模式 - 享元模式

    摘要:享元模式属于结构型模式的一种,又称轻量级模式,通过共享技术有效地实现了大量细粒度对象的复用概述两种结构状态内部状态享元对象内部不随外界环境改变而改变的共享部分。 享元模式(Flyweight Pattern)属于结构型模式的一种,又称轻量级模式,通过共享技术有效地实现了大量细粒度对象的复用... 概述 两种结构状态 内部状态:享元对象内部不随外界环境改变而改变的共享部分。 外部状态...

    Jason 评论0 收藏0
  • 设计模式享元模式

    摘要:类图相关的设计模式享元模式和代理模式当代理模式消耗性能比较大的时候,就可以用享元模式享元模式和单例模式容器单例,享元模式就是复用对象的思想。源码中的享元模式源码地址享元模式参考慕课网设计模式精讲设计模式读书笔记享元模式 0x01.定义与类型 定义:提供了减少对象数量从而改善应用所需的对象结构的方法,系统使用少量对象,而且这些都比较相似,状态变化小,可以实现对象的多次复用。 运用共享技...

    vvpale 评论0 收藏0
  • JavaScript 设计模式系列 - 享元模式与资源池

    摘要:享元模式运用共享技术来有效地支持大量细粒度对象的复用,以减少创建的对象的数量。意为苍蝇,指轻蝇量级,指代对象粒度很小。如果考生人数少,就分别少准备几个自动档和手动档的驾考车,考生多的话就多准备几辆。我们去考四六级的时候为什么这么多考试 showImg(https://segmentfault.com/img/remote/1460000020135777); 享元模式 (Flyweig...

    104828720 评论0 收藏0
  • 《设计模式》3.结构型模式

    摘要:类的适配器结构目标角色这就是所期待得到的接口,由于是类适配器模式,因此目标不可以是类。这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装。和适配器模式的关系适配器模式的用意是改变所考虑对象的接口,而代理模式不能改变。 点击进入我的博客 3.1 适配器模式 适配器模式把一个类的接口变换成客户端所期待的另一种接口,使得原本因接口不匹配而无法在一起工作的两个类能够在一起工作。 3...

    Yuqi 评论0 收藏0
  • Design Patterns - Flyweight Pattern(译)

    摘要:享元模式会复用那些内存中已经存在且与请求对象相似的对象,而不是去创建新的对象,那些已经存在的对象会以某种方式存储,如果没有发现与请求匹配的对象时将会创建新的对象。 原文链接译者:smallclover希望对你有所帮助,谢谢! 设计模式-享元模式 享元模式主要用来减少对象的数量(复用我们内存中已存在的对象,减少在系统创建对象实例),以此来减少对内存资源的占用,从而提高系统的性能。这种类型...

    darryrzhong 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<