“对象性能”模式
面向对象很好的解决了“抽象”的问题,但是必不可免地要付出一定代价。对于通常情况来讲,面向对象地成本大都可以忽略不记。但是某些情况下,面向对象所带来的成本比较谨慎处理
典型模式
单件模式
享元模式
单件模式
动机
在软件系统中,经常有这样一些特殊的类,必须保证他们在系统中只存在一个实例,才确保他们逻辑正确性,以及良好的效率
模板定义
保证一个类仅有一个实例,并提供一个该实例的全局访问点
结构
要点总结
- 单件模式中实例构造器可以设置为protected以允许子类派生
- 单件模式一般不要支持拷贝构造函数和clone接口,因为这有可能导致多个对象实例,与单例模式初衷违背
享元模式
动机
在软件系统采用纯粹对象方案的问题在于大量细粒度的对象会很快充斥在系统中,从而带来很高的运行时代价——主要指内存需求方面的代价
模板定义
运用共享技术有效的支持大量细粒度的对象
结构
要点总结
- 面向对象很好的解决了抽象性的问题,但是作为一个运行在机器中的程序主体,我们需要考虑对象的代价问题,我们需要考虑对象的代价问题,享元模式主要解决面向对象的代价问题,一般不触及面向对象的抽象性问题
- 享元模式采用对象共享的做法降低系统中对象的个数,从而降低细粒度对象给系统带来的内存压力