flyweight设计模式_适配器模式菜鸟

flyweight设计模式_适配器模式菜鸟亨元模式动机模式定义实例结构要点总结笔记。动机在软件系统采用纯粹对象方案的问题在于大量细粒度的对象会很快充斥在系统中,从而带来很高的运行时代价—主要指内存需求方面的代价如何在避免大量细粒度对象问题的同时,让外部客户仍然能够透明地使用面向对象地方式来进行操作模式定义运用共享技术有效地支持大量细粒度地对象。实例每一个字符都是一个字体 字体对象Fontclass Font{private: //unique object key string key; //object

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

动机

在软件系统采用纯粹对象方案的问题在于大量细粒度的对象会很快充斥在系统中,从而带来很高的运行时代价—主要指内存需求方面的代价

如何在避免大量细粒度对象问题的同时,让外部客户仍然能够透明地使用面向对象地方式来进行操作

模式定义

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

实例

每一个字符都是一个字体 字体对象Font

class Font{ 
   
private:
    //unique object key
    string key;

    //object state
    //...
public:
    Font(const string &key){ 
   
        //...
    }
}

class FontFactory{ 
   
private:
    map<string,Font*>fontPool;
public:
    Font* GetFont(const string& key){ 
   
        map<key,Font*>:: iterator iten = fontPool.find(key);

        if(item != footPool.end()){ 
   
            return fontPool[key];
        }
        else{ 
   
            Font* font = new Font();
            fontPool[key] = font;
            return font;
        }
    }
    void clear(){ 
   
        //..
    }
}

结构

在这里插入图片描述

要点总结

  • 面向对象很好地解决了抽象性地问题。但是作为一个运行在机器中的程序实体,我们需要考虑对象的代价问题。Flyweight主要解决面向对象的代价问题。一般不触及面向对象的抽象性问题。
  • flyweight采用对象共享的做法来降低系统中对象的个数,从而降低细粒度对象给系统带来的压力。在具体实现方面,要注意对象状态的处理
  • ”对象的数量太大“这一说法没有具体的定义

笔记。

  • 用共享的方式公用对象
  • 其实这也是共享池的设计方式
  • 有很多不同的实现方式
  • 字符串常量池就是使用了这种思想
  • 只有Flyweight和Singteton模式解决的是性能问题 而不是抽象问题
  • 这种模式创建出来的对象一般是只读的 否则共享不成立
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/168506.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Python中的lambda的简单介绍[通俗易懂]

    Python中的lambda的简单介绍[通俗易懂]Python中的lambda的简单介绍1、lambda是什么?123456789func=lambda x:x+1print(func(1))#2print(fu

    2022年7月5日
    27
  • java多线程–同步锁、

    java多线程–同步锁、同步代码块:语法:synchronized(同步锁){     需要同步操作的代码}—————————————————同步锁:为了保证每个线程都能正常执行原子操作,Java引入了线程同步机制.同步监听对象/同步锁/同步监听器/互斥锁:对象的同步锁只是一个概念,可以想象为在对象上标记了一个锁….

    2022年6月13日
    28
  • html flex上下居中,css3 flex实现div内容水平垂直居中的几种方法

    html flex上下居中,css3 flex实现div内容水平垂直居中的几种方法一、flex-direction:(元素排列方向)※flex-direction:row(横向从左到右排列==左对齐)※flex-direction:row-reverse(与row相反)※flex-direction:column(从上往下排列==顶对齐)※flex-direction:column-reverse(与column相反)二、flex-wrap:(内容一行容…

    2022年5月7日
    40
  • C语言结构体(struct)常见使用方法[通俗易懂]

    C语言结构体(struct)常见使用方法[通俗易懂]注意:盗版是不会得到修正和更新的!今天复习一下struct,顺便挖掘一下以前没注意的小细节:基本定义:结构体,通俗讲就像是打包封装,把一些有共同特征(比如同属于某一类事物的属性,往往是某种业务相关属性的聚合)的变量封装在内部,通过一定方法访问修改内部变量。(因为C++和C有共通之处,但是在结构体上的某些机制又有所不同,所以后边提了一下,不喜欢可以略过)结构体定义:…

    2022年5月12日
    74
  • Java线程池七个参数详解

    本文参考:https://blog.it-follower.com/posts/1035400434.htmljava多线程开发时,常常用到线程池技术,这篇文章是对创建java线程池时的七个参数的详细解释。从源码中可以看出,线程池的构造函数有7个参数,分别是corePoolSize、maximumPoolSize、keepAliveTime、unit、workQueue、threadF…

    2022年4月4日
    73
  • 应用之星推出“图文app”制作工具,并附上教程「建议收藏」

    应用之星推出“图文app”制作工具,并附上教程

    2022年2月4日
    405

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号