flyweight 享元模式(对象结构型) Flyweight在拳击比赛中指最轻量级,即"蝇量级"或"雨量级",这里选择使用"享元模式"的意译,是因为这样更能反映模式的用意.享元模式是对象的结构模式.享元模式以共享的方式高效地支持大量的细粒度对象. 意图 运用共享技术有效地支持大量细粒度的对象.关键字:对象共享 动机 Flyweight模式描述了如何共享对象,降低内存消耗和运行开销.Flyweight是一个共享对象,对象有内部状态和外部状态. 内…
前言 前面我们学习了创建型设计模式,其中有5中,个人感觉比较重要的是工厂方法模式.单例模式.原型模式.接下来我将分享的是结构型模式! 一.适配器模式 1.1.适配器模式概述 适配器模式(Adapter)属于结构型设计模式,它的作用如同它的名字一样,用于转换接口.像我们的手机.电脑的电源适配器一样,适配器模式可以使彼此不兼容的代码间优雅地协作. 适配器模式将某个类的接口转换成客户端(用户)期望的另一个接口表示,目的是消除由于接口不匹配所造成的类的兼容性问题.主要分为三类:类的适配器模式.对象的适配…
享元模式(FlyWeight)  “享”取“共享”之意,“元”取“单元”之意. 意图 运用共享技术,有效的支持大量细粒度的对象. 意图解析 面向对象的程序设计中,一切皆是对象,这也就意味着系统的运行将会依赖大量的对象. 试想,如果对象的数量过多,势必会增加系统负担,导致运行的代价过高. 下面看两个小例子理解下 1.)有一首歌曲叫做<大舌头> 其中有一句歌词“说说说说 说你爱我 我我我我 说不出口” 如果使用面向对象的编程方式对这段歌词进行描述,假设一个汉字表示一个对象,你会怎么做? 你会用七个…
现在在大力推行节约型社会,“浪费可耻,节俭光荣”.在软件系统中,有时候也会存在资源浪费的情况,例如,在计算机内存中存储了多个完全相同或者非常相似的对象,如果这些对象的数量太多将导致系统运行代价过高.那么,是否存在一种技术可以用于节约内存使用空间,实现对这些相同或者相似对象的共享访问呢?答案是肯定的,这种技术就是享元模式. 享元模式(Flyweight) 学习难度:★★★★☆ 使用频率:★☆☆☆☆ 一.围棋棋子的设计 M公司开发部欲开发一个围棋软件,其界面效果如下图所示: M公司开发人员通过对围棋…
现在在大力推行节约型社会,“浪费可耻,节俭光荣”.在软件系统中,有时候也会存在资源浪费的情况,例如,在计算机内存中存储了多个完全相同或者非常相似的对象,如果这些对象的数量太多将导致系统运行代价过高.那么,是否存在一种技术可以用于节约内存使用空间,实现对这些相同或者相似对象的共享访问呢?答案是肯定的,这种技术就是享元模式. 一 享元模式概述 1.1 享元模式简介 享元(Flyweight)模式:运用共享技术有效地支持大量细粒度对象的复用.系统只使用少量的对象,而这些对象都很相似,状态变化很小,可以…
设计模式:享元(FlyWeight)模式 一.前言     享元(FlyWeight)模式顾名思义,既是轻量级的,原因就是享元,共享元素,这里的元素指的是对象.如何共享对象,那就是在检测对象产生的时候,如果产生的是同一个对象,那么直接使用已经产生的,听起来很像是单例模式,其实享元模式的内部实现就是很类似与单例模式的懒汉模式.享元的好处就是,在某些场景下可以节省内存,从而使得程序的性能得到提升.     那么到底什么对象是可以共享的呢?!比如操作系统安装的时候就已经自动保存的图标.字体等等东西,这…
享元(Flyweight)模式:运用共享技术有效的支持大量细粒度的对象. /* * 抽象享元(Flyweight)角色:此角色是所有的具体享元类的超类,为这些类规定出需要实现的公共接口. 那些需要外蕴状态(External State)的操作可以通过调用商业方法以参数形式传入. * 具体享元(ConcreteFlyweight)角色:实现抽象享元角色所规定的接口.如果有内蕴状态的话,必须负责为内蕴状态提供存储空间. 享元对象的内蕴状态必须与对象所处的周围环境无关,从而使得享元对象可以在系统内共享…
组合模式/composite模式/对象结构型 意图 将对象组合成树形结构以表示"整体--部分"的层次结构.Composite使得用户对单个对象和组合对象的使用具有一致性. 动机 Composite模式,关键是一个抽象类(组件),既可以代表对象(叶子节点),又可以代表组合(中间节点).使用组合模式,我们能把相同的操作应用到组合和个别对象上. 通过让组件包含管理子节点和叶节点的操作,换取了对客户的透明性. 透明性和安全性的抉择 组合模式,使得用户对叶子节点和中间节点一视同仁,但是用户可以叶…
代理模式 PROXY 别名Surrogate 意图 为其他的对象提供一种代理以控制对这个对象的访问. 代理模式含义比较清晰,就是中间人,中介公司,经纪人... 在计算机程序中,代理就表示一个客户端不想或者不能够直接引用一个对象 而代理对象可以在客户端和目标对象之间起到中介的作用 结构 代理模式的根本在于隔离,如下图所示,间接访问 代理对象如何能够真的代理真实对象? 在Java语言中,看起来像的一个方式就是实现同一接口   代理角色和真实对象角色拥有共同的抽象类型,他们拥有相同的对外接口reque…
  桥接模式Bridge   Bridge 意为桥梁,桥接模式的作用就像桥梁一样,用于把两件事物连接起来   意图 将抽象部分与他的实现部分进行分离,使得他们都可以独立的发展.  意图解析 依赖倒置原则要求程序要依赖于抽象接口,不要依赖于具体实现. 简单的说就是要求对抽象进行编程,不要对实现进行编程,这样就降低了客户与实现模块间的耦合 抽象 抽象就是将多个事物.实体中共同的概念提取出来 比如,一组共同特性的对象概念,可以提取出来类 如果一些类又具有共同的概念性联系,又可以提取出来抽象类和接口 实…